从变量输出字符串文字

Sea*_*ean 4 c++ c++11

我想知道是否可以从预设变量输出原始字符串,其值不能更改.例如:

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)

Kos*_*tas 7

转义序列\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-xx,还有的值之间没有直接的关联\xx,至少在ASCII表中,所以switch语句是必要的.