Logo
Section 1 / 7

字面量

现在,我们将学习字面量。

导入

字面量

现在,我们将学习字面量。

字面量是程序中显式写出的值。

字面量可以是任何基本数据类型(如 int、bool 等)的值。字面量的值是固定的,因此字面量也被称为常量。

C++ 支持多种内置字面量:

1#include <iostream> 2 3int main() { 4 unsigned int unsigned_int = 42u; // 无符号整数 5 int hex = 0x2a; // 十六进制 6 std::string raw = R"(Raw String)"; // 原始字符串 7 8 std::cout << unsigned_int << ", " << hex << ", " << raw << "\n"; 9}

字面量不仅限于简单值。甚至像下面这样的 lambda 函数:

1[](int a, int b){ return a+b; }

也是一种 函数字面量。

原始字符串字面量

原始字符串字面量会忽略字符串中转义字符的特殊含义。代码中第6行就是一个例子。

原始字符串字面量的写法如下:

1R"(Raw String)"

它还支持扩展语法:

1R"Sep(Raw String)Sep" // Sep(最长16个字符,不能包含空格、反斜杠或冒号)

原始字符串字面量在路径表达式和正则表达式中特别有用:

1R"(C:\temp\newFile.txt)" // 路径表达式 2R"(c\+\+)" // 正则表达式

示例

以下是原始字符串字面量的实际应用示例:

1#include <iostream> 2#include <string> 3 4int main(){ 5 std::cout << "\n"; 6 7 std::string nat = "C:\temp\newFile.txt"; 8 std::cout << nat << std::endl; 9 10 // 包含 \t \n 11 std::string raw1 = std::string(R"(C:\temp\newFile.txt)"); 12 std::cout << "\n" << raw1 << "\n"; 13 14 // 包含 \t \n 并使用分隔符 15 std::string raw2 = std::string(R"TRENNER(C:\temp\newFile.txt)TRENNER"); 16 std::cout << "\n" << raw2 << "\n"; 17 18 // 包含引号的原始字符串 19 std::string raw3 = std::string(R"(a raw string including ")"); 20 std::cout << "\n" << raw3 << "\n"; 21 22 std::cout << "\n"; 23}

在下一课中,我们将讨论用户自定义字面量。

核心语言

用户定义的字面量