gpt4 book ai didi

c++ - 计算 C++ 中的 unicode 字符

转载 作者:太空狗 更新时间:2023-10-29 23:23:39 25 4
gpt4 key购买 nike

如何在 C++ 中计算 UTF-8 文件中的 unicode 字符?也许如果有人会如此友好地向我展示一个“独立”的方法,或者使用一个简短的例子 http://icu-project.org/index.html .

编辑:一个重要的警告是我需要计算每个字符的数量,所以我不是在计算字符总数,而是在计算一组字符的出现次数.

最佳答案

在 UTF-8 中,非前导字节的前两位总是设置为 10,因此忽略所有此类字节即可。如果你不介意额外的复杂性,你可以做更多的事情(根据前导字节的位模式跳过非前导字节)但实际上,除了短字符串(因为无论如何,您通常会接近内存带宽)。

编辑:我最初误读了您的问题,只是询问如何计算以 UTF-8 编码的字符串的长度。如果你想计算字符频率,你可能想要 convert those to UTF-32/UCS-4 ,那么您将需要某种稀疏数组来计算频率。

其中最难的部分是计算代码点与字符。例如,考虑字符“À”——“带重音的拉丁文大写字母 A”。至少有两种不同的方式来产生这个角色。您可以使用代码点 U+00C0,它将整个内容编码在一个代码点中,或者您可以使用代码点 U+0041(拉丁文大写字母 A)后跟代码点 U+0300(结合重音符号).

规范化(相对于 Unicode)意味着将所有这些字符变成相同的形式。您可以将它们全部组合成一个代码点,或者将它们全部分离成单独的代码点。为了您的目的,尽可能将它们组合成一个代码点可能更容易。自己写这个可能不太实用——我会使用 normalizer API来自 ICU 项目。

关于c++ - 计算 C++ 中的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3586923/

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