字符串文字的类型是什么?

问题描述 投票:0回答:2

我对字符串文字的类型感到困惑。是

const char *
还是
const char

c++ string literals string-literals
2个回答
31
投票

它是一个

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

这就是为什么您可以执行

sizeof("hello") - 1
来获取字符串中的字符数(包括任何嵌入的
NUL
);如果它是一个指针,它将不起作用,因为它始终是系统上指针的大小(减一)。


10
投票

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

L"Hello world"
const wchar_t[12]

自 C++14 起,

"Hello world"s
std::string

自 C++17 起,

"Hello world"sv
std::string_view

另请注意 C++11 添加的

u8""
u""
U""
字符串文字表示法,它们分别指定 UTF-8、UTF-16 和 UTF-32 编码。非限定字符串文字(即
""
L""
)的编码是(并且始终是)实现定义的。

© www.soinside.com 2019 - 2024. All rights reserved.