我正在尝试编写一个函数,找出这个单词格鲁吉亚语与否。我为拉丁字符写了它,它起作用了。现在我试图改变它以通过char读取QString char并与georgian第一个和最后一个字母进行比较。我怎样才能做到这一点?我做错了什么?
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());
}
答案 0 :(得分:0)
如果将字符串编码为UTF-8,则处理UTF-8代码单元(单字节可能只是多字节序列的一部分),而不是代码点。最好的解决方案是简单地使用QString迭代器:
for (QString::iterator it = sit.begin(); it != sit.end(); ++it) {
if (*it < 'ა' || *it > 'ჰ') {
...
}
}