Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于c+中字符数据类型的问题+;_C++ - Fatal编程技术网

C++ 关于c+中字符数据类型的问题+;

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

我理解“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都称为宽字符串,尽管该术语通常专门指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
中。