c – 我可以使用CArchive在MFC中序列化STL的映射吗?
发布时间:2020-12-16 03:40:31 所属栏目:百科 来源:网络整理
导读:我需要将地图的内容(键是int的ID,值是自定义结构)写入文件,然后从文件中加载它.我可以使用CArchive在MFC中完成吗? 谢谢! 解决方法 在MFC中,我认为最简单的方法是首先序列化地图的大小,然后简单地遍历所有元素. 您没有指定是否使用std :: map或MFC的CMap,但
我需要将地图的内容(键是int的ID,值是自定义结构)写入文件,然后从文件中加载它.我可以使用CArchive在MFC中完成吗?
谢谢! 解决方法
在MFC中,我认为最简单的方法是首先序列化地图的大小,然后简单地遍历所有元素.
您没有指定是否使用std :: map或MFC的CMap,但基于std :: map的版本可能如下所示: void MyClass::Serialize(CArchive& archive) { CObject::Serialize(archive); if (archive.IsStoring()) { archive << m_map.size(); // save element count std::map<int,MapData>::const_iterator iter = m_map.begin(),iterEnd = m_map.end(); for (; iter != iterEnd; iter++) { archive << iter->first << iter->second; } } else { m_map.clear(); size_t mapSize = 0; archive >> mapSize; // read element count for (size_t i = 0; i < mapSize; ++i) { int key; MapData value; archive >> key; archive >> value; m_map[key] = value; } } } 如果在读取存档时发生错误,则其中一个流操作应抛出异常,然后由更高级别的框架捕获. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |