C++转义控制字符

标签 c++ string c++11 escaping

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

最佳答案

我还没有听说过,但实现一个应该相对容易:

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();
}

关于C++转义控制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30242577/

相关文章:

c++是否可以将对象类型传递给要与之比较的函数

c++ - ifstream 的 operator>> 来检测行尾?

python - 如果其中一个键的值在字符串中,则返回字典键

c - 反转函数数组字符串

c++ - 为什么这个C++程序编译失败?

c++ - 使用 std::sort 对类 vector 进行降序排序

string - 如何在 NSIS 中连接 2 个字符串

c++ - VS 2010,移动构造函数仅在 move() 之后到达并且比复制构造函数慢?

c++ - 为具有相互引用/循环依赖的类复制构造函数

c++ - 流氓线被绘制到窗口