如何在单个文件中序列化 QHash 和 QMap?

Posted

技术标签:

【中文标题】如何在单个文件中序列化 QHash 和 QMap?【英文标题】:How to serialize a QHash and a QMap in a single file? 【发布时间】:2015-11-04 23:12:32 【问题描述】:

我有一个 QHash 和一个单独的 QMap。我可以单独序列化它们。但我想在一个文件中对它们进行序列化:

QMap<int,QString> myMap;
QHash<QString,MyCalss> myHash;
// .. fill: both have 4 (key,value) pairs.
// write here
QDataStream out (&myFile);
out<<myMap;
out<<myHash;
// read written
QDataStream in (&myFile);
in>>myMap>>myHash;

最后一次读取(此处为 myHash)始终为空。当我切换顺序时

QDataStream out (&myFile);
out<<myHash;
out<<myMap;
// read written
QDataStream in (&myFile);
in>>myHash>>myMap;

所以这里的 myMap 是空的。

如何同时序列化两者?

【问题讨论】:

【参考方案1】:

怎么了

QDataStream out (&myFile);
out<<myMap;
out<<myHash;
// read written
QDataStream in (&myFile);
in>>myMap;
in>>myHash;

将 'in' 序列化为 Hash 并将 Hash 序列化为 Map 不会产生预期的结果。

【讨论】:

以上是关于如何在单个文件中序列化 QHash 和 QMap?的主要内容,如果未能解决你的问题,请参考以下文章

QMap 与 QHash

Qt ------- QMap和QHash的区别

QMap与QHash

Qt6STL-QMap分析

第37课 深度解析QMap与QHash

第三十七课深度解析QMap与QHash