在 boost::fs::p ath 中转义空白
Escape white space in boost::fs::path
它在锡上说什么。有没有更聪明的方法可以替换不需要regex
boost::fs::path
中的空格?
编辑为例:
_appBundlePath = boost::fs::path("/path/with spaces/here");
regex space(" ");
string sampleFilename = regex_replace((_appBundlePath/"audio/samples/C.wav").string(), space, "\ ");
问题:有没有办法避免使用正则表达式?对我来说似乎有点矫枉过正。
编辑 2 我的问题是通过 libpd 将字符串传递给纯数据时。PD 会将空格解释为分隔符,因此我的字符串将被切成多个符号。用双引号括起来是行不通的,我什至不确定转义空格会不会,但值得一试。
最聪明的方法就是不这样做。
例如,使用 execve
而不是 system
(这样您就可以在数组中传递参数,而无需 shell 转义)。例如,请参阅如何转义发送到C++中"system"命令的变量?
或者,例如,如果您与数据库服务器通信,请不要连接查询,而是将参数绑定到预准备语句中。这再次排除了任何逃跑的需要。
避免转义可以避免一系列安全问题(RCE、SQLi 等)
如果你必须,可能就做
"'" + replace_all(path.string(), "'", "''") + "'"
例如,这将很好 bash
贝壳
对于其他任何内容,找出哪些字符需要转义并使用适合目标的现有库函数,例如
- http://en.cppreference.com/w/cpp/io/manip/quoted
- https://dev.mysql.com/doc/refman/5.7/en/mysql-real-escape-string.html
- 。等。
相关文章:
- 如何用转义符替换字符串中的所有特殊字符
- 如何在C++中将 Python 字符串转换为其转义版本?
- 如何在C++中用'\'替换''来处理转义序列?
- 如何将 std::filesystem::p ath 转换为 LPCSTR,以便在 LoadLibrary() 变体之一
- 如何解释C++字符串中的 \u 转义码?
- PostgresSQL - SQL Ready 语句与字符串转义,防止 SQL 注入攻击
- 如何获取 std::filesystem::p ath 中的最后一个目录?
- 有没有办法获取用户操作系统的ANSI转义码?
- 是否可以在原始字符串文本中插入转义序列?
- 将 boost::文件系统::p ath 转换为 char?
- 为什么当我从 cin 阅读时转义字符不起作用?
- 使用无法适应其相关类型的转义序列
- 转义std::字符串中的特殊字符
- 我可以转义(抑制)C预处理器宏扩展吗
- C++二进制值的转义序列
- std(boost)::文件系统::p ath 组件数
- 传递 boost::filesystem::p ath 到 boost::p rocess::child 会导致 Win
- 'std::filesystem::p ath' 没有标准哈希吗?
- 在 boost::fs::p ath 中转义空白
- 为什么 boost::filesystem::p ath 和 std::filesystem::p ath 的路径转义字