wchar_t在一般编程中有什么用?

Ken*_*nta 30 c++

今天我学习了一些C++基础知识并开始了解wchar_t.我无法弄清楚,为什么我们实际上需要这种数据类型,我该如何使用它?

eca*_*mur 31

wchar_t用于以固定宽度,多字节编码表示文本; 因为wchar_t它通常是2个字节大小,所以它可以用来表示任何2字节编码的文本.它还可用于表示可变宽度多字节编码中的文本,其中最常见的是UTF-16.

wchar_t在大小为4字节的平台上,它可以用来表示使用UCS-4(Unicode)的任何文本,但是因为在大多数平台上它只有2个字节,它只能用可变宽度编码表示Unicode(通常是UTF-16) .使用char可变宽度编码(例如UTF-8或GB 18030)更为常见.

关于唯一wchar_t广泛使用的现代操作系统是Windows; 这是因为Windows在扩展到U + FFFF之前采用了Unicode,因此固定宽度的2字节编码(UCS-2)似乎是合理的.现在UCS-2不足以代表整个Unicode,因此Windows使用UTF-16,仍然使用wchar_t2字节代码单元.


Age*_*ien 6

wchar_t是一个广泛的角色.它用于表示需要更多内存来表示它们而不是常规字符的字符char.例如,它在Windows API中广泛使用.

但是,a的大小wchar_t取决于实现,并且不能保证大于char.如果您需要支持大于8位的特定形式的字符格式,您可能需要转向char32_tchar16_t保证分别为32位和16位.


int*_*aik 5

wchar_t当您需要存储代码大于255的字符时(它具有比char可存储的值更大的值),则使用此选项.

char可以采用256个不同的值,这些值对应于ISO拉丁表中的条目.另一方面,宽字符可以占用超过65536个值,这些值对应于Unicode值.它是最近的国际标准,允许对几乎所有语言和常用符号进行字符编码.

  • ASCII 只有 7 位宽,127 以上的字符不属于 ASCII。Unicode 包含超过 65536 个字符,并且在许多平台上 `sizeof(wchar_t)` 大于 2。我已经更正了你的帖子。 (4认同)