使用UTF-8时我应该使用wchar_t吗?

0x4*_*2D2 5 c++ unicode utf-8

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

dus*_*uff 10

不,你不应该!Unicode 4.0标准(ISO 10646:2003)指出:

宽度wchar_t是特定于编译器的,可以小到8位.因此,需要可通过任何C或C++编译器移植的程序不wchar_t应用于存储Unicode文本.

在大多数情况下,UTF-8文本的"字符性质"与您的程序无关,因此将其视为char元素数组,就像任何其他字符串一样,就足够了.但是,如果需要提取单个字符,则应将这些字符存储为至少24位宽的类型(例如uint32_t),以便容纳所有Unicode代码点.