概述:
在C和C++中,如果想在字符串中表示一些特殊字符,往往都是通过特殊字符进行转义。例如输入路径时,想要输入\
,就要使用\\
,对其进行转义,因为\
是特殊字符。而在C++11中,提供了原始字面量这一操作,在原始字面量中省略了转义的操作,可以直接对特殊字符进行表示。
此外,之前如果想要将一个字符串写在不同的行,需要加连接符,而原始字面量则无需加连接符。
语法:
R"xxx(原始字符串)xxx"
其中:
- R开头说明这是一个原始字面量
- 两侧的
xxx
必须一致,但在字符串解析时会被忽略,因此一般不需要加。 - 原始字符串必须在
()
内。
Eg:
-
输出特殊字符:
#include <iostream> #include <cstring> using namespace std; int main(void){ string str1 = "D:\\Coding\\test.cpp"; // 使用原始字面量无需对特殊字符进行转义 string str2 = R"(D:\Coding\test.cpp)"; cout << str1 << ednl; cout << str2 << ednl; return 0; }
输出:
D:\Coding\test.cpp D:\Coding\test.cpp
-
字符串跨越多行:
int main(void){ string str1 = "one\ two\ three"; // 使用原始字面量无需添加连接符 string str2 = R"(one two three)"; cout << str1 << ednl; cout << str2 << ednl; return 0; }