字符串字面量(string literal)是指双引号引住的字符,双引号中可以没有字符,也可以有很多个字符。使用字符串字面量可以快速得到需要的一些编码字符。
1. 字面量列表
语法 | 示例 | 解释 | |
---|---|---|---|
“(未转义字符\ | 转义字符)” | “示例” | 窄多字节字符串字面量 |
L”(未转义字符\ | 转义字符)” | L”示例” | 宽字符串字面量, 为了支持汉语等语言。 |
u8”(未转义字符\ | 转义字符)” | u8”示例” | UTF-8 编码的字符串字面量。 (C++11起新增) |
u”(未转义字符\ | 转义字符)” | u”示例” | UTF-16 编码的字符串字面量。 (C++11起新增) |
U”(未转义字符\ | 转义字符)” | U”示例” | UTF-32 编码的字符串字面量。 (C++11起新增) |
前缀(可选)R”分隔符(原始字符)分隔符” | R”prefix(示例)prefix” 或R”(示例)” |
原始字符串字面量。 (C++11起新增) |
2. 关于L"..."
字面量
- 类型:
const wchar_t[N]
,其中N是执行范围编码的代码单元中的字符串大小,包括空终止符。
3. 关于R"..."
字面量
R
为原始字符串字面量,用于避免转义任何字符。该字面量分隔符间的任何内容都成为字符串的一部分。例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main(int argc, char *argv[])
{
const char *longString = R"(
This is
a very
long
string.
)";
std::cout<<"====="<<std::endl;
std::cout<<longString<<std::endl;
std::cout<<"====="<<std::endl;
return 0;
}输出:
1
2
3
4
5
6
7
8=====
This is
a very
long
string.
=====由于
R"(
的后面与)"
的前面都使用了换行,所以输出两个空换行。
4. 参考内容
1 | https://en.cppreference.com/w/cpp/language/string_literal |