如何知道 QDataStream 不能反序列化某些东西?
How to know that QDataStream cannot deserialize something?
请考虑 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
无法将文件内容反序列化为QString
和qint32
以及如何处理QDatastream
中的此类反序列化错误?
根据官方文档,您可以(并且应该)使用 Read Transactions:
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 时,您应该确定数据的顺序和组成。
请考虑 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
无法将文件内容反序列化为QString
和qint32
以及如何处理QDatastream
中的此类反序列化错误?
根据官方文档,您可以(并且应该)使用 Read Transactions:
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 时,您应该确定数据的顺序和组成。