我需要把一个map的内容(key是int的ID,value是自定义的struct)写入一个文件,稍后从文件中加载。我可以在带有 CArchive 的 MFC 中完成吗?
谢谢!
最佳答案
在 MFC 中,我认为最简单的方法是首先序列化 map 的大小,然后简单地遍历所有元素。
你没有指定你使用的是 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;
}
}
}
如果在读取存档时发生错误,其中一个流操作应该抛出异常,然后由更高级别的框架捕获。
关于c++ - 我可以使用 CArchive 在 MFC 中序列化 STL 映射吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261215/