gpt4 book ai didi

c++ - 扩展 'isalnum' 以识别 UTF-8 元音变音

转载 作者:搜寻专家 更新时间:2023-10-31 00:02:37 26 4
gpt4 key购买 nike

我写了一个扩展 isalnum 的函数来识别 UTF-8 编码的变音符号。

是否有更优雅的方法来解决这个问题?

代码如下:

bool isalnumlaut(const char character) {
int cr = (int) (unsigned char) character;
if (isalnum(character)
|| cr == 195 // UTF-8
|| cr == 132 // Ä
|| cr == 164 // ä
|| cr == 150 // Ö
|| cr == 182 // ö
|| cr == 156 // Ü
|| cr == 188 // ü
|| cr == 159 // ß
) {
return true;
} else {
return false;
}
}

编辑:

我现在多次测试我的解决方案,但它似乎可以满足我的目的。有强烈的反对意见吗?

最佳答案

您的代码与您声称的不符。

Ä 的 utf-8 表示是两个字节 - 0xC3,0x84。值高于 0x7F 的单独字节在 utf-8 中没有意义。


一些一般性建议:

  • Unicode 很大。考虑使用已经处理过您遇到的问题的库,例如 ICU .

  • 函数在单个代码单元代码点 上运行通常没有意义。拥有对代码点范围或单个字形进行操作的函数更有意义(有关这些术语的定义,请参阅 here)。

  • 对于像通用字符集这样大的字符集,您的字母数字概念可能未明确说明;您想将西里尔字母表中的字符视为字母数字吗? Unicode 关于什么是字母的概念可能与您的不匹配 - 特别是如果您没有考虑过的话。

关于c++ - 扩展 'isalnum' 以识别 UTF-8 元音变音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726777/

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