如何知道QDataStream不能反序列化某些内容



请考虑QDataStream文档中的以下代码片段:

QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);    // read the data serialized from the file
QString str;
qint32 a;
in >> str >> a;           // extract "the answer is" and 42

有没有办法知道QDataStream无法将文件的内容反序列化为QStringqint32,以及如何处理QDatastream中的反序列化错误?

根据官方文档,您可以(也应该(使用读取事务:

in.startTransaction();
QString str;
qint32 a;
in >> str >> a; // try to read packet atomically
if(in.commitTransaction())
{
// read is ok, check the data you had read
} 
else
{
// wait for more data or show unknown error
}

如果你有一个文件作为IO设备,你可以在没有事务的情况下读取,但你必须手动检查是否有必要的数据量。使用QDataStream时,您应确保数据的顺序和组成。

相关内容

  • 没有找到相关文章

最新更新