如何在c ++ String中将“\”替换为“\\”

时间:2018-01-15 10:16:33

标签: c++ c++11 visual-c++

我有string My_string = "First string\r\nSecond string\r\nThird string" ...等。 新字符串在\ r \ n后开始,我想用\替换\\

我试过: - My_string.replace("\","\\");但它对我不起作用。 还有其他办法吗?

2 个答案:

答案 0 :(得分:5)

如果要将转义字符(\ n,\ r \ n等)转换为文字反斜杠和[a-z]字符,可以使用switch语句并附加到缓冲区。假设有一个C ++标准库字符串,您可以这样做:

std::string escaped(const std::string& input)
{
    std::string output;
    output.reserve(input.size());
    for (const char c: input) {
        switch (c) {
            case '\a':  output += "\\a";        break;
            case '\b':  output += "\\b";        break;
            case '\f':  output += "\\f";        break;
            case '\n':  output += "\\n";        break;
            case '\r':  output += "\\r";        break;
            case '\t':  output += "\\t";        break;
            case '\v':  output += "\\v";        break;
            default:    output += c;            break;
        }
    }

    return output;
}

这使用switch语句,并将所有常见的转义序列转换为文字' \'和用于表示转义序列的字符。所有其他字符按原样附加到字符串。简单,高效,易于使用。

答案 1 :(得分:1)

试试这段代码?

My_string.replace( My_string.begin(), My_string.end(), 'x', 'y'); //replace all occurances of 'x' with 'y'

here是一个类似的问题