0

我正在尝试构建一组用于解码和修改多字节 utf-8 字符串的辅助函数。例如,查找字符串中的字符数量,以及查找特定字符的字节偏移量。

我一直在寻找解决方案,但一直无法弄清楚。如果有人可以向我展示仅使用 STL 的跨平台和可移植方式,我将不胜感激。此外,如果有 c++11 方法可以做到这一点,我也对此持开放态度。

4

1 回答 1

3

您应该阅读和研究有关 UTF-8 的维基百科页面,那里清楚地描述了编码L https://en.wikipedia.org/wiki/UTF-8

要解码 UTF-8,请读取第一个字节,这应该告诉您有多少后续字节构成该字符。然后读入许多其他字节,连接“数据”位,您将获得代码点编号。

如果您这样做直到到达字符串的末尾,这允许您计算字符串中有多少个代码点。

如果您这样做直到达到某个代码点索引,您将知道该代码点索引的字节偏移量。

我认为除了基本的std::string::const_iterator.

至于非标准库,我强烈建议使用ICU之类的 unicode 库,或者不要自己编写代码。如果你小心的话,.Net 库有点工作,但我认为 Windows 没有任何其他 API 可以帮助解决这个问题。

于 2013-07-26T17:25:49.243 回答