【问题标题】:how to use qstring as char array如何使用 qstring 作为 char 数组
【发布时间】:2013-03-31 10:49:05
【问题描述】:

我正在尝试编写一个函数来判断这个词是不是格鲁吉亚语。我为拉丁字符写了它并且它有效。现在我正在尝试将其更改为按字符读取 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());

}

【问题讨论】:

  • 你的代码哪里出错了?
  • 我不知道格鲁吉亚语,但从这个格鲁吉亚字符的 UTF-8 页面 (fileformat.info/info/unicode/block/georgian/utf8test.htm) 看来,您要检查的字母只是小写字母。但是你没有检查大写字母。您的测试输入是否包含任何大写字符?
  • 不,格鲁吉亚语中没有大写字符

标签: unicode qstring arrays


【解决方案1】:

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

for (QString::iterator it = sit.begin(); it != sit.end(); ++it) {
    if (*it < 'ა' || *it > 'ჰ') {
        ...
    }
}

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 2012-11-04
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多