是否有C ++函数来转义字符串中的控制字符?例如,如果输入为"First\r\nSecond"
,则输出应为"First\\0x0D\\0x0ASecond"
。
答案 0 :(得分:2)
我还没有听说过,但实施它应该相对容易:
unordered_map<char, string> replacementmap;
void initreplecementmap() {
replacementmap['\''] = "\\0x27";
replacementmap['\"'] = "\\0x22";
replacementmap['\?'] = "\\0x3f";
replacementmap['\\'] = "\\\\";
replacementmap['\a'] = "\\0x07";
replacementmap['\b'] = "\\0x08";
replacementmap['\f'] = "\\0x0c";
replacementmap['\n'] = "\\0x0a";
replacementmap['\r'] = "\\0x0d";
replacementmap['\t'] = "\\0x09";
replacementmap['\v'] = "\\0x0b";
}
string replace_escape(string s) {
stringstream ss;
for (auto c: s) {
if (replacementmap.find(c) != replacementmap.end()) {
ss << replacementmap[c];
} else {
ss << c;
}
}
return ss.str();
}
答案 1 :(得分:1)
是否有C ++函数来转义字符串中的控制字符?
通过这种方式,如果你的意思是“你可以使用标准库函数来完成吗?”,答案是否定的。
答案 2 :(得分:0)
我还没有听说过使用原始ANSI转义码作为C或C ++中的代码,但我知道有些像
/n
用于创建换行符,所以也许使用
#define ActualEscapeCode AsciiEscapeCode
代替?