从QDataStream转换为QChar时显示不需要的字符

时间:2015-06-25 11:18:34

标签: c++ qt

我的代码如下

QByteArray bla("abcde");    
QDataStream ds(bla.right(bla.size()-1));
QChar c;
ds>>c;
qDebug()<<c; // It prints '?' instead of 'b'

如果我将代码更改为

,则打印出b
qint8 c; 
ds>>c; 
qDebug()<<QChar(c); // It now prints 'b'. 

对于单个角色来说没关系,我有很多角色,然后我需要制作一个循环并投射它们中的每一个。请建议一个好的方法。

1 个答案:

答案 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;
}