c++ Unicode编码的wchar_t大小

kq0g1dla  于 2022-12-24  发布在  其他
关注(0)|答案(4)|浏览(146)

UTF-32字符串编码是否有32位宽字符?我想通过std::wstring来实现,它显然显示Windows平台上宽字符的大小为16位。

uemypmqf

uemypmqf1#

在许多平台上,您将无法使用std::wstring执行此操作,因为它将包含16位元素。
相反,您应该使用std::basic_string<char32_t>,但这需要具有一些C++0x支持的编译器。

6pp0gazn

6pp0gazn2#

wchar_t的大小取决于平台,它独立于UTF-8、UTF-16和UTF-32(它可以用于表示unicode数据,但没有说明它表示unicode数据)。
我强烈建议使用UTF-8和std::string来表示内部字符串,并使用ICU等已建立的库来处理涉及unicode的复杂操作和转换任务。

vxqlmq5t

vxqlmq5t3#

使用typedef即可!
它看起来像这样:

typedef int char_32;

并像这样使用它:

char_32 myChar;

或者作为C-串:

char_32* string_of_32_bit_char = "Hello World";
h9vpoimq

h9vpoimq4#

现代的解决方法是使用char32_t(c++11),它可以和std::u32string一起使用。然而,实际上,你应该只使用std::string和类似UTF-8的编码。注意,char32_t的旧方法是使用模板或宏来确定哪个无符号整型的大小为4字节,然后使用它。

相关问题