C++ 关于c+中字符数据类型的问题+;
我理解“char”数据类型用于存储单个字符并使用1个字节,但char16\u t、char32\u t和wchar\u t用于什么?毕竟,对于C++ 关于c+中字符数据类型的问题+;,c++,C++,我理解“char”数据类型用于存储单个字符并使用1个字节,但char16\u t、char32\u t和wchar\u t用于什么?毕竟,对于char16\u t和char32\u t,我们只能存储一个字符,引用的是: char16_t和char32_t类型分别表示16位和32位宽的字符。编码为UTF-16的Unicode可以存储在char16_t类型中,编码为UTF-32的Unicode可以存储在char32_t类型中。这些类型的字符串和wchar\u t都称为宽字符串,尽管该术语通常专门指w
char16\u t
和char32\u t
,我们只能存储一个字符,引用的是:
char16_t和char32_t类型分别表示16位和32位宽的字符。编码为UTF-16的Unicode可以存储在char16_t类型中,编码为UTF-32的Unicode可以存储在char32_t类型中。这些类型的字符串和wchar\u t都称为宽字符串,尽管该术语通常专门指wchar\u t类型的字符串
对于wchar\u t
:
wchar\u t类型是一种实现定义的宽字符类型。在Microsoft编译器中,它表示用于存储Unicode编码为UTF-16LE(Windows操作系统上的本机字符类型)的16位宽字符。通用C运行时(UCRT)库函数的宽字符版本使用wchar_t及其指针和数组类型作为参数和返回值,本机Windows API的宽字符版本也是如此
所以他们不能简单地说是一个角色。如上所述,类型与编码不同
例如,
char16\u t
编码中的字符u
(u+0075)存储为feff0075
如果您的字母表超过256个字符怎么办?它们通常用于存储unicode字符。虽然utf8可以使用单字节字符,但utf16和utf32需要更多的字节。很抱歉,我不熟悉这一点,但我认为字母表只有1个字符宽?它怎么能有256个字符宽呢?Re:“例如,char16_t编码中的字符u存储为字节feff0075(u+0075)”--不完全一样。这是该角色的UTF-16表示。它可以存储在char16\u t
中,但char16\u t
不限于UTF-16(正如char
不限于ASCII,尽管许多人认为它们是相同的)。您必须始终知道所使用的编码。u
存储在单个char16\u t
中,就像0x0075
一样0xfeff
表示UTF-16,如果存在,将位于单独的char16\u t
中。