C++ 11引入了 R原始字符串,格式定义如下:
R"<tag>(<content>)<tag>"
以 R" 开头,字符串内容以 () 包含,双引号与括号之间的<tag>是可选的,要求前后一致,内容中可以包含任意字符,比如Tab、空格、换行等等,不需要做转义处理(转义字符按原始字符输出)。字符串内容中的换行字符在编译时被处理为字符 \n。
测试代码:
#include <iostream>
using namespace std;
int main() {
char* szData = R"rawtext(first line
This is a test! \n // Every thing is valid.
\t
This line starts with 4 spaces.
last line)rawtext";
cout << szData;
cout << endl;
for (int i = 0; i < 20; i++) {
cout << (int)szData[i] << ' ';
if (i == 9) cout << endl;
}
cout << endl;
cout << "\\r = " << (int)'\r' << endl;
cout << "\\n = " << (int)'\n' << endl;
cout << "\\t = " << (int)'\t' << endl;
}
在 Windows 系统下代码运行结果为:
first line
This is a test! \n // Every thing is valid.
\t
This line starts with 4 spaces.
last line
102 105 114 115 116 32 108 105 110 101
10 9 9 84 104 105 115 32 105 115
\r = 13
\n = 10
\t = 9