首先是我的代码。
QByteArray buff;
QDataStream stream(&buff, QIODevice::ReadWrite);
stream.setVersion(QDataStream::Qt_4_7);
stream << 5;
stream << 6;
qDebug() << buff;
int x;
int y;
stream >> x >> y;
qDebug() << x << y;
我希望x为5,y为6.但它显示0 0 这是输出
"
0 0
答案 0 :(得分:3)
正如弗兰克所说,QDataStream
仍处于最终位置(写完数据后)。如果您不想创建新流,还应该可以调用stream.reset()
将流的内部位置放在开头。或类似stream.seek(0)
。
答案 1 :(得分:1)
试试这个:
QByteArray buff;
QDataStream stream(&buff, QIODevice::ReadWrite);
stream.setVersion(QDataStream::Qt_4_0);
stream << 5;
stream << 6;
qDebug() << buff.toHex();
int x;
int y;
// This line will move the internal QBuffer to position 0
stream.device()->reset();
stream >> x >> y;
qDebug() << x << y;
输出:
"0000000500000006"
5 6
答案 2 :(得分:0)
由于数据流的内部状态(流位置),您无法同时使用单个QDataStream从/向QByteArray读/写。尝试使用第二个QDataStream进行阅读。