gpt4 book ai didi

c++ - 如何解码多字节 utf8 字符串? (C++)

转载 作者:行者123 更新时间:2023-11-28 03:12:53 47 4
gpt4 key购买 nike

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

我一直在寻找解决方案,但一直没能弄明白。如果有人可以向我展示一种跨平台和可移植的方式来仅使用 STL 来做到这一点我真的很感激。此外,如果有 c++11 方法可以做到这一点,我也愿意接受。

最佳答案

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

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

如果执行此操作直到到达字符串末尾,这允许您计算字符串中有多少个代码点。

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

除了基本的 std::string::const_iterator 之外,我不认为真的有任何 STL 功能对此有帮助。

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

关于c++ - 如何解码多字节 utf8 字符串? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17887342/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com