1、原始字面量:
格式:
R"xxx(String)xxx"
原始字面量的引出是因为对字符解析产生的歧义。
使用场景一:
比如当字符串中出现“\”(比如:'n\t'),你控制台输出结果为'n',因为c++或者别的语言中“\”是关键字,像'\t'、'\n'会识别为关键字进行另外的字符处理,之前一般都是再加一个“\”进行转义,现在c++11可以使用原始字面量来进行原始输出,让编译器对其进行跳过解析,比如:R"("n\t")",他会原封不动的输出为"n\t",并不会进行制表符处理。
使用场景二:
如果字符串太长你不想写在一行,又不想每一行使用连接符,如果不写连接符,编译器会直接报错,
出现语法错误,比如:
` string str1="hello
word
hhh";`
会直接语法错误。
方式一:添加连接符
` string str2="hello\
word\
hhh";`
方式二:使用原始字面量:
` string str3=R"("hello
word
hhh)"; `
编译不会产生语法错误,控制台原封不动输出三行字符串
原始字面量的描述【标注】
上面我们说原始字面量的格式是:R"xxx(String)xxx"
这里的xxx就表示描述的字符,就像前端html的标签,'<img></img>'一样
但是原始字面量的描述必须前后一致(一模一样);正确写法:string str4=R"hello("work very day”)hello";
但是编译输出时会只剩下:work very day;hello会被编译器忽略,只能用来做标注的作用。