C++学习笔记-string_literals(字符串字面量)

字符串字面量就是直接在代码中写出来的字符串,通常被单引号('')或者双引号("")包围起来的字符或字符串。字符串字面量在编译时会直接写入编译后的二进制文件中。因此是不可修改的。

字符串字面量是不可修改的

当使用指针引用字符串字面量时,实际上是指针指向了字符串在二进制文件中的内存地址。

1
const char* helloPtr = "Hello"; // 如果你使用指针来引用字符串字面量,则应该加上const。

但字符数组是可以修改的

字符串字面量永远是存储在内存的只读区域的,即便使用字符数组也是一样的,只不过它会 把它复制到栈上而已,所以字符数组可以改。

1
2
3
char helloArr[] = "Hello";
helloArr[1] = 'a'; // 字符数组可以改
std::cout << helloArr << std::endl;

C++14中字符串字面量

1
2
using namespace std::string_literals; // using namespace std::string_literals; 是一条C++中的指令,它允许你直接使用字符串字面量来创建std::string对象,而无需显式地调用std::string的构造函数。
std::string helloWorld = "Hello"s + "World!";  // 注意这里的's'后缀,它表示这是一个std::string字面量,它返回一个string对象

多行字符串字面量

1
2
3
const char* line = R"(Line1
Line2
Line3)"; // R表示原始字符串,它会忽略转义字符

总结

  1. 字符串字面量是不可修改的。它程序编译时被写入二进制文件中。
  2. 字符串字面量通常被双引号("")或者单引号('')包围起来。
updatedupdated2025-03-132025-03-13