【发布时间】:2018-03-22 10:36:52
【问题描述】:
有没有一种简单的方法来转义字符串中所有出现的\?我从以下字符串开始:
#include <string>
#include <iostream>
std::string escapeSlashes(std::string str) {
// I have no idea what to do here
return str;
}
int main () {
std::string str = "a\b\c\d";
std::cout << escapeSlashes(str) << "\n";
// Desired output:
// a\\b\\c\\d
return 0;
}
基本上,我正在寻找与this 问题相反的问题。问题是我无法在字符串中搜索 \,因为 C++ 已经将其视为转义序列。
注意: 我一开始就无法更改字符串 str。它是从 LaTeX 文件中解析的。因此,this 对类似问题的回答不适用。 编辑:由于不相关的问题导致解析失败,这里的问题是关于字符串文字。
编辑:有很好的解决方案来查找和替换已知的转义序列,例如this answer。另一种选择是使用boost::regex("\p{cntrl}")。但是,我还没有找到一种适用于未知(错误)转义序列的方法。
【问题讨论】:
-
你展示一个文件样本和你的解析代码怎么样?
-
在每个斜线之前添加另一个 \ 并尝试
-
要搜索特殊字符,请在它们前面加上
\,例如\\。您不需要修改 source 数据。 -
顺便说一句,您也不需要“转义”源数据。就这样很好。如果您尝试检查调试器中的字符,您会看到
\字符显示为\\。只有源代码中的字符串文字才需要转义。如果你使用cout << str,你会看到没有修改的原始字符串 -
我不想接触解析代码。一个相关的问题是:有没有办法在字符串中搜索 any 转义字符?