24

我需要一个好的 C++ Unicode 库。我需要:

  1. 以 Unicode 敏感的方式进行转换。例如,以不区分大小写的方式对所有字符串进行排序,并获取它们的第一个字符作为索引。将各种 Unicode 字符串转换为大写和小写。在合理的位置拆分文本——也适用于中文和日文的单词。
  2. 以区域设置敏感的方式格式化数字、日期(应该是线程安全的)。
  3. 对 UTF-8(主要内部表示)的透明支持。

据我所知,最好的图书馆是 ICU。但是,我找不到带有示例的普通开发人员友好的 API 文档。此外,据我所知,它对现代 C++ 设计、使用 STL 等不太友好。像这样:

std::string msg;
unistring umsg.from_utf8(msg);
unistring::word_iterator wi;
for(wi=umsg.words().begin(),n=0;wi!=usmg.words().wi_end(),n<10;++wi,++n) 
  ;
msg=umsg.substr(umsg.words().begin(),wi).to_utf8();
cout<<_("Five 10 words are ")<<msg;

是否有在开源许可下发布的对 STL 友好的 ICU 包装器?首选是许可许可,如 MIT 或 Boost,但其他许可,如兼容 LGPLv2,也可以。

有没有其他类似ICU的高质量图书馆?

平台:Unix/POSIX,不需要 Windows 支持。

编辑:不幸的是我没有登录,所以我不能接受答案。我自己附上了答案。

4

3 回答 3

21

这个问题是我很久以前就问过的。没有这样的图书馆。

所以我编写了 C++ 友好的Boost.Locale库来包装 ICU。

Edit Now 是 Boost 的一部分:参见Boost.Locale 文档

于 2009-11-09T17:44:51.693 回答
1

wxWidgets GUI 工具包有一些相当不错的字符串类和 unicode 支持。如果您不想,则不需要构建/使用 GUI 类。有关详细信息,请参见此处

于 2009-02-04T13:20:39.823 回答
1

这符合要求吗?

http://www.codeproject.com/KB/string/utf8cpp.aspx

于 2009-02-04T13:44:32.350 回答