- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
在我的项目中,我需要几个常量哈希容器,它们在类和函数之外定义,因此是全局的。这样,其中一些容器应该重叠。对于列表,我将执行以下操作以将第二个 const 列表与第一个 const 列表组合: cons
我正在使用 QT 4.8,我注意到它有一个 QHash 类,可以按如下方式使用: QHash hash; hash["one"] = 1; hash["three"] = 3; has
我想从我的 QHash 中得到一个随机对,数字为 n。 现在我这样做: QHash::iterator iterator = dictionary.begin(); iterator+= n; que
我有一个 QHash ,而 MyClass 只是一些带有 getter 和 setter 的 QString quint8 值的集合。 MyClass 还有一个 QDataStream &operat
我一直在尝试并试图让它工作,但它就是拒绝工作。我阅读了 QT 文档,但无法使插入功能发挥作用。构建时出现以下复杂错误 /home/mmanley/projects/StreamDesk/libstre
我需要一个 QHash 容器,它采用 quint8 键,但采用异构类型作为值,所有这些都将是 Qt 容器或类。例如,我可能想插入一个 QDate 或 QTime 对象,甚至 quint8 作为值。 如
是否可以按插入顺序循环 QHash?下面的方法似乎通过一些其他因素循环散列: QHashIterator i(hash); while (i.hasNext()) { i.next();
我是 Qt 的新手,正在学习处理 QHash 的工作原理。在处理这个例子时,我不明白为什么这会给我一个错误。我可能会遗漏一些东西,但请指导我学习这一点。 主要.cpp int main(int arg
我试图找到实现使用多个键返回一个值的类似 QHash 的查找表的最佳方法。我已经读到 Boost 库具有类似的功能,但如果可能,我想避免这种情况。 我想做的一个例子如下(显然下面的伪代码是不可能的):
我想存储从一个类继承的 QHash 元素。所以我有: class ImageInterface { public: ImageInterface(); ImageInterface(c
我想使用 QSet自定义对象。从文档中,我发现: QSet's value data type must be an assignable data type. You cannot, for exa
我有一个QHash > qhash ,并尝试覆盖 QVector 中的值如下: void Coordinate::normalizeHashElements(QHash > qhash) {
我有一个服务器类,它处理 QJsonObject 数据并根据数据中设置的键来处理它。 目前,我使用一个很大的 if-then-else 语句来决定要做什么: const QString action
我有我的代码: for(QHash::iterator i=list.begin();i!=list.end();++i) { long id = QVariant((*i).key()).t
我正在尝试使用 QMutableHashIterator 遍历 QHash 并找到所有重复值,然后将每个重复值的键添加到 QStringList。我以前从未使用过 QHash,也不确定具体如何去做。在
我使用 QHash 作为容器,我有一个任务是删除所有满足谓词的项目。起初我想使用 Erase-remove idiom事实证明,QHash 没有删除范围的选项,只有一个 function。通过迭代器删
我在 C++ 中使用 QHash 来存储一些简单的键值对。在我的例子中,键是一个整数,值也是。要向散列添加新的键/值对,这是我的语法: QHash myhash; int key = 5; int v
我想创建一个 QSet我想在我的程序中使用。 Tag是我的自定义类。 当我构建代码时,我得到关于 qHash 的 gcc 错误重载: Exercise.cpp.o In file included f
我想创建一个带有 QVariants 键的数据结构。它看起来像这样: QHash, SHAPES::Shape* > _shapes; 不幸的是,“没有匹配的函数来调用‘qHash(const QVa
假设一个程序以相同的方式运行多次。在每次运行中,相同的一组对象以相同的插入顺序插入到 QHash 中;然后迭代 QHash 中的对象。问题是在程序的每次运行中对象是否会以相同的顺序迭代? 最佳答案 可
我是一名优秀的程序员,十分优秀!