用于unicode编码的wchar_t的大小

use*_*241 2 c++ unicode

是否有32位宽的字符用于编码UTF-32字符串?我想这样做std::wstring,显然在Windows平台上显示我的宽字符大小为16位.

Dav*_*nan 6

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

相反,你应该使用std::basic_string<char32_t>,但这需要一个具有一些C++ 0x支持的编译器.

  • 谨防!请记住,仅仅因为您使用的是32位编码并不意味着您可以假设每个代码点代表一个字符!小心不要分割复合字符.根据你正在做的事情,你可能想要找一个将你的字符串分解为字形集群的库.见http://www.unicode.org/reports/tr29. (5认同)

Mic*_*yan 5

大小wchar_t取决于平台,它独立于UTF-8,UTF-16和UTF-32(它可用于表示unicode数据,但没有任何内容表示它代表了这一点).

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