33 C++字符串字面量
字符串字面量
为什么大小是 7?因为还有一个00
的额外的空终止符:"Cherno\0"
两个.
代表00
的位置
这个字符串是存储在二进制文件的 const 部分 用 16 进制编辑器打开,可以看到二进制文件中有"Cherno",这些字符被嵌入到二进制文件中了。当我们引用时,它实际指向一个不允许编辑的常量数据块。
在 Release 模式下运行修改字符串,也不会发生改变。而 Debug 模式下会得到一个异常。
wide char
const char* name = u8"Cherno";
const wchar_t* name2 = L"Cherno"; // L表明后面的字符串字面量是由宽字符组成的
// 2 bytes
//C++11引入
const char16_t* name3 = u"Cherno"; // 16 bits = 2 bytes
const char32_t* name4 = U"Cherno"; // 32 bits = 4 bytes
wchar_t 和 char16_t 的区别?
虽然我们一直说 wchar 每个字符都是 2 字节,但实际上是由编译器决定的。(Windows:2 bytes,Linux:4 bytes)。
如果你希望它一直是 2 bytes,你可以用char16_t
R 方法
字符串前面加上R
代表忽略转义符,R
代表raw
字符串字面量总是存储在只读内存中。