2013-03-31 71 views
1

我想寫一個函數,發現是這個詞的格魯吉亞或不。我爲拉丁文字寫了它,它工作。現在我正在嘗試將它改爲通過char來讀取一個QString char,並與格魯吉亞的第一個和最後一個字母進行比較。我怎樣才能做到這一點?我做錯了什麼?如何使用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()); 

} 
+0

你的代碼出了什麼問題? – maditya

+0

我不知道格魯吉亞人,但從格魯吉亞人的這個UTF-8頁面(http://www.fileformat.info/info/unicode/block/georgian/utf8test.htm),它看起來像你正在檢查的字母只有小寫字母。但是你沒有檢查大寫字母。你的測試輸入是否有大寫字母? – maditya

+0

不,在格魯吉亞人中沒有大寫字母 –

回答

0

如果編碼串爲UTF-8,你正在處理UTF-8代碼單元(單字節,這可能是一個多字節序列的僅一部分),而不是代碼點。最好的解決方案是簡單地使用一個QString迭代器:

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