无法从const QChar转换为int

时间:2013-01-27 20:18:34

标签: qt

我遇到了这段代码的问题

 #define twobit(ch) ((toupper(ch)) == 'S' ? 0LL : \
                             (toupper(ch)) == 'M' ? 1LL : \
                             (toupper(ch)) == 'F' ? 2LL : 3LL)

 const QString pop("SWDGMKF");

    qDebug()<<twobit(pop[2]); //Erorr

1 个答案:

答案 0 :(得分:1)

QChar代表一个unicode角色。因此它无法安全地转换为char。如果知道它只包含ASCII或Latin1字符,则可以分别使用toAscii()或toLatin1()进行转换。

如果可能的话,我会避免转换为char,并使用QChar方法。即,而不是toupper()使用QChar::toUpper

ch.toUpper() == QLatin1Char('S') ? 0LL : \
  ...