在Qt中比较一个字符和一个unicode

时间:2018-01-08 16:37:00

标签: c++ string qt c++11

if (lineEditText[i] == 'đ' || lineEditText[i] == 'Đ')
     lineEditText.replace(i, 1, "d");

我想比较(i)类型QString上的字符与上面的unicode。但它不起作用。那我怎么比较呢?

2 个答案:

答案 0 :(得分:2)

使用字符构建QString并将其用于比较:

if (lineEditText[i] == QString("đ")[0] || lineEditText[i] == QString("Đ")[0])

或使用wide character literals,以便将它们正确地投射到QChar

if (lineEditText[i] == L'đ' || lineEditText[i] == L'Đ') 

答案 1 :(得分:0)

您可以从其十六进制代码生成unicode字符并将其传递给QChar(uint(hexValue)。只要双方的数据类型相同,您就可以与QChar的'=='进行比较。

uint unicodeCapitalD = 0x00D0
unit unicodeSmallD = 0x0111
if (lineEditText[i] == QChar(unicodeSmallD) || lineEditText[i] == QChar(unicodeCapitalD))
    //whatever you want to do

修改:我之前的回答主要集中在生成QString containing the unicode character而不是QCharQString::fromUcs4()没有用,因为你试图将它与QLineEdit中的特定字符与unicode字符进行比较(我应该为比较生成一个QChar而不是QString)。