C++中字符串文字的数据类型是什么

What is the datatype of string literal in C++?

本文关键字:数据类型 是什么 文字 字符串 C++      更新时间:2023-10-16

我对字符串文字的数据类型感到困惑。是const char *还是const char

它是一个

const char[N](与char const[N]相同),其中N是字符串的长度加上终止NUL的长度(或者只是字符串的长度,如果您将"字符串的长度"定义为已经包括NUL)。

这就是为什么你可以做sizeof("hello") - 1来获取字符串中的字符数(包括任何嵌入的NUL s);如果它是一个指针,它就不起作用,因为它总是你系统上指针的大小(减去一)。

>"Hello world" const char[12](十一个字符加上''终止符)。

L"Hello world" const wchar_t[12].

自 C++14 年以来,"Hello world"s std::string.

另请注意 C++11 添加的u8""u""U""字符串文字表示法,分别指定 UTF-8、UTF-16 和 UTF-32 编码。非限定字符串文本的编码(即 ""L"")是(并且一直是)实现定义的。