我想知道是否可以从预设变量输出原始字符串,其值不能更改.例如:
string test = "test\ntest2";
cout << test;
Run Code Online (Sandbox Code Playgroud)
会输出
test
test2
Run Code Online (Sandbox Code Playgroud)
是否可以运行与上面类似的代码,但更改cout语句以打印原始字符串,如下所示:
test\ntest2
Run Code Online (Sandbox Code Playgroud)
转义序列\x仅转换为一个字符.
可能存在一些平台字符被打印出来的平台,\n但这完全取决于实现.
将其转换为两个字符(\和x)意味着您必须修改string自身.
最简单的方法是制作自定义功能.
void print_all(std::string s)
{
for (char c : s) {
switch (c) {
case '\n' : std::cout << "\\n"; break;
case '\t' : std::cout << "\\t"; break;
// etc.. etc..
default : std::cout << c;
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于您关心的所有转义序列.
注:与ctrl-x和x,还有的值之间没有直接的关联\x和x,至少在ASCII表中,所以switch语句是必要的.