我了解“ char”数据类型用于存储单个字符并使用1个字节的事实,但是char16_t,char32_t和wchar_t分别用于什么呢?毕竟,我们只需要存储一个字符即可
答案 0 :(得分:1)
关于char16_t
和char32_t
,引用Microsoft article:
char16_t和char32_t类型分别表示16位和32位宽字符。编码为UTF-16的Unicode可以存储为char16_t类型,编码为UTF-32的Unicode可以存储为char32_t类型。这些类型的字符串和wchar_t都被称为宽字符串,尽管该术语通常专门指代wchar_t类型的字符串。
对于wchar_t
:
wchar_t类型是实现定义的宽字符类型。在Microsoft编译器中,它表示16位宽的字符,用于存储编码为UTF-16LE(Windows操作系统上的本机字符类型)的Unicode。通用C运行时(UCRT)库函数的宽字符版本使用wchar_t及其指针和数组类型作为参数和返回值,本机Windows API的宽字符版本也是如此。
因此,不能将它们简单地视为一个字符。如上所述,类型与编码不同。
例如,以u
编码的字符char16_t
(U + 0075)被存储为feff0075
。