C++ 使用UTF-8时是否应该使用wchar\t?

C++ 使用UTF-8时是否应该使用wchar\t?,c++,unicode,utf-8,C++,Unicode,Utf 8,UTF-8可以以1、2和最多4个字节进行编码。我的系统上的单个char是1字节。我应该使用wchar\u t作为预防措施,以便能够适应任意UTF-8编码字符吗?wchar\u t如果您想使代码具有可移植性,则没有多大用处 在 wchar_t的宽度是特定于编译器的,可以小到8 位。因此,需要跨任何C或C语言移植的程序 C++编译器不应该使用WCHARGYT来存储Unicode文本。这个 wchar_t类型用于存储编译器定义的宽字符, 在某些编译器中可能是Unicode字符“ 此外 P> C++和

UTF-8可以以1、2和最多4个字节进行编码。我的系统上的单个
char
是1字节。我应该使用
wchar\u t
作为预防措施,以便能够适应任意UTF-8编码字符吗?

wchar\u t
如果您想使代码具有可移植性,则没有多大用处

wchar_t的宽度是特定于编译器的,可以小到8 位。因此,需要跨任何C或C语言移植的程序 C++编译器不应该使用WCHARGYT来存储Unicode文本。这个 wchar_t类型用于存储编译器定义的宽字符, 在某些编译器中可能是Unicode字符“

此外


<> P> C++和C++在它们各自标准的2011次修订中引入了固定大小的字符类型<代码> CHAR16.T 和 CAR32×T ,提供了16位和32位Unicode转换格式的明确表示,留下了<代码> W查尔盖特< /Code >实现。

< P>不,不应该!Unicode 4标准d(ISO 10646:2003)指出:

<>代码的宽度> WHARGYTT < /Code >是编译器专用的,可以小到8位。因此,需要跨任何C或C++编译器的程序都不应该使用<代码> WCARGYTT
来存储Unicode文本。
在大多数情况下,UTF-8文本的“字符性质”与您的程序无关,因此将其视为
char
元素数组,就像任何其他字符串一样就足够了。但是,如果您需要提取单个字符,则这些字符应存储在至少24位宽的类型中(例如,
uint32\u t
),以容纳所有Unicode代码点。

这是不必要的。参考此:
wchar\u t
通常是2字节,而不是4字节。否。请参阅您应该做的事情:)