1

我正在尝试编写一个函数来确定这个词是否是格鲁吉亚语。我为拉丁字符写了它并且它有效。现在我正在尝试将其更改为按字符读取 QString 字符并与格鲁吉亚的第一个和最后一个字母进行比较。我怎样才能做到这一点?我做错了什么?

bool Georgianword(QString &sit)
{ int i=0;

      QByteArray ba = sit.toUtf8();
while (i<sit.size())
{
    if (ba[i]<'ა' || ba[i]>'ჰ')
        break;
    i++;
}

return (i==sit.size());

}
4

1 回答 1

0

如果将字符串编码为 UTF-8,则处理的是 UTF-8 代码单元(可能只是多字节序列的一部分的单字节),而不是代码点。最好的解决方案是简单地使用 QString 迭代器:

for (QString::iterator it = sit.begin(); it != sit.end(); ++it) {
    if (*it < 'ა' || *it > 'ჰ') {
        ...
    }
}
于 2013-03-31T16:47:33.420 回答