我正在尝试构建一组辅助函数来解码和修改多字节utf-8字符串。例如,查找字符串中的字符数,并查找特定字符的字节偏移量。
我一直在寻找解决方案,但一直未能弄清楚。 如果有人能够使用STL向我展示跨平台和便携式方式来做到这一点 我真的很感激。此外,如果有一种c ++ 11方法可以做到这一点,我也会对此持开放态度。
答案 0 :(得分:2)
你应该阅读并研究UTF-8上的维基百科页面,其编码清楚地描述在那里https://en.wikipedia.org/wiki/UTF-8
要解码UTF-8,请读取第一个字节,这应该告诉您该字符有多少个后续字节。然后读入许多其他字节,连接“数据”位,你就会得到代码点号。
如果在到达字符串末尾之前执行此操作,则可以计算字符串中的代码点数。
如果在达到某个代码点索引之前执行此操作,则会知道该代码点索引的字节偏移量。
除了您的基本std::string::const_iterator
之外,我认为没有任何STL功能可以帮助解决这个问题。
对于非标准库,我高度建议使用诸如ICU之类的unicode库,或者不要自己编写代码。如果你小心,.Net库有点像工作,但我不认为Windows有任何其他API可以帮助解决这个问题。