字符串字面量就是直接在代码中写出来的字符串,通常被单引号('')或者双引号("")包围起来的字符或字符串。字符串字面量在编译时会直接写入编译后的二进制文件中。因此是不可修改的。
当使用指针引用字符串字面量时,实际上是指针指向了字符串在二进制文件中的内存地址。
1
|
const char* helloPtr = "Hello"; // 如果你使用指针来引用字符串字面量,则应该加上const。
|
字符串字面量永远是存储在内存的只读区域的,即便使用字符数组也是一样的,只不过它会
把它复制到栈上而已,所以字符数组可以改。
1
2
3
|
char helloArr[] = "Hello";
helloArr[1] = 'a'; // 字符数组可以改
std::cout << helloArr << std::endl;
|
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表示原始字符串,它会忽略转义字符
|
- 字符串字面量是不可修改的。它程序编译时被写入二进制文件中。
- 字符串字面量通常被双引号("")或者单引号('')包围起来。