我有string My_string = "First string\r\nSecond string\r\nThird string"
...等。
新字符串在\ r \ n后开始,我想用\
替换\\
。
我试过: -
My_string.replace("\","\\");
但它对我不起作用。
还有其他办法吗?
答案 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是一个类似的问题