C ++转义控制字符

时间:2015-05-14 16:34:56

标签: c++ string c++11 escaping

是否有C ++函数来转义字符串中的控制字符?例如,如果输入为"First\r\nSecond",则输出应为"First\\0x0D\\0x0ASecond"

3 个答案:

答案 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

代替?