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

时间:2012-09-20 17:45:37

标签: c++ string literals

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

2 个答案:

答案 0 :(得分:26)

这是const char[N]char const[N]相同),其中N是字符串的长度加上终止的{ {1}}(或者,如果您将“字符串的长度”定义为已包含NUL),则只是字符串的长度。

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

答案 1 :(得分:7)

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

L"Hello world"const wchar_t[12]

自C ++ 14起,"Hello world"sstd::string

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

相关问题