我的代码如下
QByteArray bla("abcde");
QDataStream ds(bla.right(bla.size()-1));
QChar c;
ds>>c;
qDebug()<<c; // It prints '?' instead of 'b'
如果我将代码更改为
,则打印出bqint8 c;
ds>>c;
qDebug()<<QChar(c); // It now prints 'b'.
对于单个角色来说没关系,我有很多角色,然后我需要制作一个循环并投射它们中的每一个。请建议一个好的方法。
答案 0 :(得分:0)
ds>>c;
等于ds>>c.unicode();
,其类型为ushort &
。虽然QByteArray包含char
s。
将QBytaArray
转换为QChar
序列的正确方法是:
QByteArray bla("abcde");
QTextCodec *codec = QTextCodec::codecForLocale();
const QString string = codec->toUnicode(bla);
foreach (const QChar &c, string) {
qDebug() << c;
}