任何人都知道更宽松的许可证(MIT /公共域)版本:
http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1ustring.html
(知道UTF-8的std :: string的'drop-in'替换)
轻量级,做我需要的一切甚至更多(怀疑我甚至会使用UTF-XX转换)
我真的不想随身携带ICU.
看看Boost.Locale库(它在引擎盖下使用ICU):
它不是轻量级的,但它允许您正确处理Unicode并将其std::string用作存储.
如果您希望找到支持Unicode的轻量级库来处理字符串,那么您将找不到这样的东西,因为Unicode不是轻量级的.即使是相对"简单"的东西,如大写,小写转换或Unicode规范化,也需要复杂的算法和Unicode数据库访问.
如果您需要能够迭代代码点(BTW 不是字符),请查看http://utfcpp.sourceforge.net/
回答评论:
1)查找我包含的文件的文件格式
std :: string :: find对此非常好.
2)断线检测
这不是一个简单的问题.您有没有试过在中文/日文文本中找到换行符?可能不是因为空间不能分隔单词.因此,断线检测很难.(我不认为即使是glib也能做到这一点,我认为只有pango有类似的东西)
当然,Boost.Locale会正确地做到这一点.
如果您只需要为欧洲语言执行此操作,只需搜索空格或标点符号,std::string::find那就更好了.
3)字符(或现在,代码点)计数查看utfcpp thx
字符不是代码点,例如希伯来语单词Shalom - "שָלוֹם"由4个字符和6个Unicode点组成,其中两个代码点用于元音.对于欧洲语言也是如此,其中单个字符用两个代码点表示,例如:"ü"可以表示为"u"和"¨" - 两个代码点.
所以,如果你知道这些问题,那么utfcpp会没问题,否则你就找不到更简单的东西了.
| 归档时间: |
|
| 查看次数: |
1463 次 |
| 最近记录: |