我遇到了这段代码的问题
#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
答案 0 :(得分:1)
QChar代表一个unicode角色。因此它无法安全地转换为char。如果知道它只包含ASCII或Latin1字符,则可以分别使用toAscii()或toLatin1()进行转换。
如果可能的话,我会避免转换为char,并使用QChar方法。即,而不是toupper()使用QChar::toUpper:
ch.toUpper() == QLatin1Char('S') ? 0LL : \
...