gpt4 book ai didi

c++ - 用自己的类序列化 QHash?

转载 作者:行者123 更新时间:2023-11-28 02:18:22 25 4
gpt4 key购买 nike

我有一个 QHash<const QString id, MyClass> ,而 MyClass 只是一些带有 getter 和 setter 的 QString quint8 值的集合。 MyClass 还有一个 QDataStream &operator<<(QDataStream &ds, const MyClass &obj)覆盖,那里。

为了序列化我使用:

typedef QHash<const QString, MyClass> MyClassHash;
//..
QDataStream &operator<<(QDataStream &ds, const MyClassHash &obj) {

QHashIterator<const QString, MyClass> i(obj);

while(i.hasNext())
{
i.next();
QString cKey = i.key();
ds << cKey << i.value();
}

return ds;
}

现在,我对另一个感到困惑:

QDataStream &operator>>(QDataStream &ds, MyClassHash &obj) {
obj.clear();

// ?

return ds;
}

我想知道序列化 QHash 的长度吗?

最佳答案

QDataStream::status呢? :

QDataStream &operator>>(QDataStream &ds, MyClassHash &obj) {
obj.clear(); // clear possible items

Myclass cMyCls;

while (!ds.status()) { // while not finished or corrupted
ds >> cKey >> cMyCls;
if (!cKey.isEmpty()) { // prohibits the last empty one
obj.insert(cKey, cMyCls);
}
}

return ds;
}

关于c++ - 用自己的类序列化 QHash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33342163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com