用于unicode编码的wchar_t的大小

时间:2011-03-16 23:12:39

标签: c++ unicode

是否有32位宽的字符用于编码UTF-32字符串?我想通过std::wstring来做这件事,显然我在Windows平台上显示了16位宽字符的大小。

4 个答案:

答案 0 :(得分:6)

您将无法在许多平台上使用std::wstring执行此操作,因为它将具有16位元素。

相反,您应该使用std::basic_string<char32_t>,但这需要编译器支持一些C ++ 0x。

答案 1 :(得分:5)

wchar_t的大小取决于平台,它独立于UTF-8,UTF-16和UTF-32(它可用于表示unicode数据,但没有任何内容可以表示它代表那个)。

我强烈建议将UTF-8与std::string一起用于内部字符串表示,并使用已建立的库(如ICU)进行涉及unicode的复杂操作和转换任务。

答案 2 :(得分:1)

ICU开源库会有所帮助,但基于Windows / VS2010将无法​​帮助您。

答案 3 :(得分:0)

只需使用typedef

它看起来像这样:

typedef int char_32;

并像这样使用它:

char_32 myChar;

或作为c字符串:

char_32* string_of_32_bit_char = "Hello World";