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

C++ 从QDataStream转换为QChar时显示不需要的字符,c++,qt,C++,Qt,我有一个代码如下 QByteArray bla("abcde"); QDataStream ds(bla.right(bla.size()-1)); QChar c; ds>>c; qDebug()<<c; // It prints '?' instead of 'b' QByteArray bla(“abcde”); QDataStream ds(bla.right(bla.size()-1)); QCC; ds>>c; qDebug()c; qDebug()

我有一个代码如下

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

qDebug()
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;
}
QByteArray bla(“abcde”);
QTextCodec*codec=QTextCodec::codeforLocale();
常量QString=codec->toUnicode(bla);
foreach(常量QChar&c,字符串){

qDebug()谢谢您的回答。但假设一个QByteArray必须转换为QDataStream,然后继续。在这种情况下,应该做什么?例如,要打印QByteArray中从左到右的多少个字符是未知的,并且参数在function@user3421760为什么您需要准确的
QChar
?读取字符有什么问题?
QByteArray bla("abcde");
QTextCodec *codec = QTextCodec::codecForLocale();
const QString string = codec->toUnicode(bla);
foreach (const QChar &c, string) {
    qDebug() << c;
}