在正常的输出中,如果含有特殊字符,如"、制表符、换行等时,在传统的C/C++中,一般都是通过转义字符的方式进行处理,如:
println("Hello,\"World\"!\t\n");
否则,如果直接将Hello,"World"输出出来,编译器是会报错的,如:
println("Hello "World"!"); //编译器报错
在C++的后期版本中,可以使用R“( 和 )”来解决以上问题,如:
println(R"(Hello "World"! Line 1
Line2)");
其输出结果如下:
Hello,"World"! Line 1
Line2
可以完美地解决以上问题。有一个问题需要注意,就是原来的那些转义字符如果出现在了字符串中,系统会正常地输出\t \n \r \"等字符串,而不会当做转义字符进行转义,如:
println(R"(Hello "World"!\t\r\n\")");
其结果如下:
Hello "World"!\t\r\n\"
这里面还有一个问题,就是如果"(或")在输出字符串中怎么办,C++给出了一个完美地解决方案,就是在R"(与)"的R与“以及)与”之间加一个不超过16个字符的分隔符,如:
println(R"-(Hello )" "World"!\t\r\n\")-");
就是在两个字符之间添加了一个-的分隔符,其结果如下:
Hello )" "World"!\t\r\n\"