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

What is the use of wchar_t in general programming?

本文关键字:什么 编程 wchar      更新时间:2023-10-16

今天我学习了一些C++基础知识,了解了wchar_t。我不明白,为什么我们真的需要这个数据类型,我该如何使用它?

wchar_t用于表示固定宽度多字节编码中的文本;由于CCD_ 3的大小通常为2字节,因此它可以用于表示任何2字节编码中的文本。它也可以用于表示可变宽度多字节编码中的文本,其中最常见的是UTF-16。

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

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

wchar_t是一个宽字符。它用于表示比常规char需要更多内存来表示的字符。例如,它在Windows API中被广泛使用。

然而,wchar_t的大小取决于实现,并且不能保证大于char。如果您需要支持大于8位的特定形式的字符格式,您可能需要使用char32_tchar16_t,它们分别保证为32位和16位。

wchar_t用于存储代码大于255的字符(其值大于char所能存储的值)。

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

我知道他们中的大多数人都已经回答了这个问题,但由于我也在学习C++基础知识,并且了解了wchar_t,我想告诉你我在搜索后了解了什么。

  1. wchar_t在需要存储ASCII 255以上的字符时使用,因为这些字符的大小大于我们的字符类型"char"。因此,需要更多的内存。

    例如:

    wchar_t var = L"Привет мирn"; // hello world in russian
    
  2. 它的大小通常大于8位字符。

  3. windows操作系统大量使用它。

  4. 它通常在涉及外语时使用。

wchar_t数据类型用于显示wide characters that will occupy 16 bits。此数据类型占用"2或4"个字节。

当使用日语等国际语言时,大多使用wchar_t数据类型。

wchar_t类型用于扩展字符集的字符。它是与wstring一起使用的其他用途之一,wstring是一个可以包含扩展字符集的单个字符的字符串,而不是可能包含大小为char的单个字符或使用多个字符表示单个符号的字符串(如utf8)。

wchar_t大小取决于语言环境,按照标准,它可以表示语言环境支持的最大扩展字符集的所有成员。

wchar_t在C++语言中的[basic.basic]/p5中指定为:

类型wchar_t是一种不同的类型,其值可以表示在支持的区域设置([locale])中指定的最大扩展字符集的所有成员的不同代码。

换句话说,wchar_t是一种数据类型,它可以处理包含任何语言中的字符的文本,而无需担心字符编码。

在基本多语言平面以上支持Unicode的平台上,wchar_t通常为4字节(Linux、BSD、macOS)。

由于历史原因(Windows最初仅支持UCS2),仅在Windows上wchar_t为2字节,并使用UTF-16LE编码。

在实践中;1个CCD_ 26=1个字符";由于Unicode支持组合字符和字形(由代码点序列表示的字符),这个概念变得更加复杂。