QDataStream 无法序列化数据

QDataStream unable to serialize data

本文关键字:数据 序列化 QDataStream      更新时间:2023-10-16

我正在尝试按照这里的教程并序列化Qt对象。这是我的代码:

QFile file("/Users/kaustav/Desktop/boo.dat");
if (!file.open(QIODevice::WriteOnly)) {
    qDebug() << "Cannot open file for writing: "
         << qPrintable(file.errorString()) << endl; //no error message gets printed
    return 0;
}
QDataStream out(&file);   // we will serialize the data into the file
out.setVersion(QDataStream::Qt_5_3); //adding this makes no difference
out << QString("the answer is");   // serialize a string
out << (qint32)42;

当我运行这个程序时,文件在我的桌面上创建得很好,但它的大小是0 kB,它是空白的。当然,当我尝试这个时:

 QFile file("/Users/kaustav/Desktop/boo.dat");
 file.open(QIODevice::ReadOnly);
 QDataStream in(&file);    // read the data serialized from the file
 in.setVersion(QDataStream::Qt_5_3);
 QString str;
 qint32 w;
 in >> str >> w;

我在str中得到一个空白字符串.我做错了什么?如果有任何帮助,我正在使用基于Qt 5.2.1Qt Creator 3.1.1

检查调用 open 时是否返回任何错误,并确保在完成文件后使用 file.close() 关闭文件。

当你使用Qt 5时,在保存数据时,你应该使用QSaveFile。