【发布时间】:2014-11-14 07:28:30
【问题描述】:
我正在学习 Unicode,有几个问题希望得到解答。
1) 我在 Linux 上读过,std::wstring 是 4 字节,而在 Windows 上是 2 字节。这是否意味着 Linux 内部支持是 UTF-32 而 Windows 是 UTF-16?
2) std::wstring 的使用和std::string 接口的使用很相似吗?
3) VC++ 是否支持使用 4 字节 std::wstring?
4) 如果使用 std::wstring 是否需要更改编译器选项?
作为旁注,我遇到了一个使用 UTF-8 的字符串库,它具有与 std::string 非常相似的接口,它提供了熟悉的功能,例如长度、子字符串、查找、大写/小写转换等。库是 Glib::ustring。
请随时添加任何 cmets 或其他建议,因为我真的需要它。
谢谢!
【问题讨论】:
-
C++11 char32_t 类型应该提供一个解决方案,但是它在微软的待办事项列表中是最后一个。非常怀疑它在未来 10 年内是否会派上用场 :) 是的,你几乎总是需要一个库来做任何不平凡的事情。 ICU是一种常见的选择。
-
@HansPassant,这让我对 VC++ 对未声明的标识符等感到困惑。 ICU 太大了……我想我要试试 Glib::ustring 看看它是否能满足我的所有需求。顺便说一句,不久前你警告过我关于代码页的事情,你是对的。
-
关于它的几乎所有内容都写在 utf8everywhere.org 宣言中。
标签: c++ unicode utf-8 utf-16 utf-32