-1

我对这段代码有问题

 #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
4

1 回答 1

1

QChar 代表一个 unicode 字符。因此它不能安全地转换为 char。如果您知道它仅包含 ASCII 或 Latin1 字符,则可以分别使用 toAscii() 或 toLatin1() 对其进行转换。

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

ch.toUpper() == QLatin1Char('S') ? 0LL : \
  ...
于 2013-01-27T20:28:21.340 回答