Obl*_*ica 22
基本上,原始字符串文字是一个字符串,其中不处理 C++的转义字符(如\n \t或\")。以 开头R"(和结尾的原始字符串文字)",引入C++11
前缀(可选)R“分隔符(raw_characters)分隔符”
前缀 - L、u8、u、U 之一
感谢@Remy Lebeau,它
delimiter是可选的并且通常被省略,但在某些极端情况下确实需要它,特别是如果字符串内容包含其中的字符序列)",例如: R"(...)"...)",因此您需要一个分隔符来避免错误,例如:R"x(...)"...)x"。
看一个例子:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string normal_str="First line.\nSecond line.\nEnd of message.\n";
string raw_str=R"(First line.\nSecond line.\nEnd of message.\n)";
cout<<normal_str<<endl;
cout<<raw_str<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
第一行。
第二行。
消息结束。
第一行。\n第二行。\n消息结束。\n
原始字符串文字是旨在简化包含引号和反斜杠之类的嵌套字符的字符串文字,这些字符通常在定界符和转义序列开始时具有含义。例如,它们对于编码HTML之类的文本很有用。例如对比
"<a href=\"file\">C:\\Program Files\\</a>"
Run Code Online (Sandbox Code Playgroud)
这是一个常规的字符串文字,带有
R"(<a href="file">C:\Program Files\</a>)"
Run Code Online (Sandbox Code Playgroud)
这是原始字符串文字。在这里,除引号外还使用括号可以使C ++区分嵌套引号和界定字符串本身的引号。