gpt4 book ai didi

c++ - 如何迭代 std::string 以获得一组 Freetype FT_ULong?

转载 作者:行者123 更新时间:2023-11-28 06:46:11 33 4
gpt4 key购买 nike

std::string 通常被解释为 UTF8,因此具有可变长度编码。在我的字体渲染器中,我遇到了一个问题,因为我不确定如何从 std::string 获取“字符”并将其转换为 Freetype FT_ULong 以获得字形使用 FT_Get_Char_Index。也就是说,我不确定我正在做的事情是否“正确”,因为我只是遍历 std::string 并将生成的字符转换过来(当然这是不正确的,尽管它适用于我的操作系统默认值)。

那么是否有一种“正确”的方式来做到这一点,更重要的是,是否有人编写了一个库来实现这种“正确”的方式,我可以现成使用?

最佳答案

你应该先看看UTF8是怎么编码的,就知道起始位是什么样的,有多少字节。

参见 http://en.wikipedia.org/wiki/UTF8

然后你可以这样写代码:

  if ((byte & 0x80) == 0x00) {
// 1 byte UTF8 char
}
else if ((byte & 0xE0) == 0xC0) {
// 2 bytes UTF8 char
}
else if ...

然后你可以用正确的字节迭代 std::string 中的每个 UTF8 字符。

关于c++ - 如何迭代 std::string 以获得一组 Freetype FT_ULong?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24953140/

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