如何使用纯C ++安排正确处理Unicode字符串?
我的意思是,当你将你的unicode字符串放入std :: string并计算它的长度时,有时你会得到10个字符,用于5个字符长的字符串。
他们是如何在严肃的开源程序中完成的?他们如何以跨平台的方式做到这一点?你如何将它绑定到文件i / o和stdin / stdout流?
感谢。
答案 0 :(得分:5)
有Boost.Locale,用C ++编写,包装了ICU库,并为它提供了一个漂亮的非外来接口。
对于Unicode工作,我的第一选择是Boost.Locale,然后直接选择ICU(如果Boost.Locale还没有包装的话)。
答案 1 :(得分:4)
std::[w]string
没有任何Unicode支持。它们都只能在[w]char[_t]
单元上以编码无关的方式运行。
如果您只需要长度和转换以及编码验证形式的基本Unicode支持,那么utfcpp就会为这些操作提供一个漂亮的C ++接口。
像Qt和wxWdigets这样的应用程序框架确实提供了自己的string
类,这些类提供了更好的Unicode支持,但通常会让你在整个代码中使用整个框架。
除此之外,还有ICU,它是 标准的Unicode实现方式。
本网站上的一位C ++大师正在进行的工作是ogonek。你一定可以通过Lounge<C++>
StackOverflow聊天室联系作者,询问他的进展情况。
答案 2 :(得分:2)
答案 3 :(得分:1)
您已经检查过http://site.icu-project.org了吗?
答案 4 :(得分:1)
ICU目前是 Unicode库。如果您需要跨平台的Unicode支持,ICU基本上是唯一可以获得它的地方。
如果只有它的界面不比自动霰弹枪的错误末端更不友好。
答案 5 :(得分:0)
我已经使用wxWidgets来执行此操作。它使得从std :: string轻松转换为字符串类型wxString。它并不理想,但效果很好,简单易用。