gpt4 book ai didi

c++ - 微型 utf8 : getting offset in characters/codepoints

转载 作者:太空狗 更新时间:2023-10-29 21:11:44 24 4
gpt4 key购买 nike

我正在使用 tiny-utf8 ,它作为 std::string 的直接替代品,但具有迭代 UTF-8 字符的能力。一切似乎都很好,但是,有时我的字符串会被其他库(在我的例子中是 RE2)以原始形式 (char*) 检查。其他库返回子字符串的偏移量。除了它们返回的偏移量是针对原始字符串的,这意味着它们以字节为单位。

我的问题是,如何将这些转换为代码点/字符偏移量?

我找到了一种方法,它似乎可以在一个调用中完成我所需要的:

utf8_string str = "我的 UTF-8 字符串";
str.get_num_resulting_codepoints(0, offsetInBytes);

除了,它是 protected 。我当然可以公开它,但它必须有一个隐藏的原因;应该有另一种方法。

我也在考虑使用 raw_get 方法,但我不确定这样做是否正确:

str.raw_get(offsetInBytes) - str.begin()

最佳答案

方法 get_num_resulting_codepoints 在版本 2 中被重命名为 get_num_codepoints 并且另外被设为私有(private)。我已经起草了一个新版本 "2.0.2" ,这使得 get_num_codepoints 再次公开(连同 get_num_bytesget_num_bytes_from_start)。

您可以像以前一样使用它。然而,减去迭代器的解决方案更优雅一些,因为它完全相同并且同样有效。我会坚持那个:)

关于c++ - 微型 utf8 : getting offset in characters/codepoints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49716774/

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