存储map而不是qmap
时间: 2023-07-28 18:47:08 浏览: 93
如果你想要使用C++ STL中的`map`而不是Qt中的`QMap`,你可以使用C++ STL提供的文件流(fstream)进行二进制存储。下面是一个简单的示例代码,展示了如何使用`std::map`和`fstream`进行二进制存储和读取:
```cpp
#include <map>
#include <iostream>
#include <fstream>
int main()
{
std::map<std::string, int> myMap;
myMap.insert(std::make_pair("apple", 2));
myMap.insert(std::make_pair("banana", 3));
myMap.insert(std::make_pair("orange", 4));
// 将map写入文件
std::ofstream out("map.bin", std::ios::binary);
out.write(reinterpret_cast<const char*>(&myMap), sizeof(std::map<std::string, int>));
out.close();
// 从文件中读取map
std::map<std::string, int> myMap2;
std::ifstream in("map.bin", std::ios::binary);
in.read(reinterpret_cast<char*>(&myMap2), sizeof(std::map<std::string, int>));
in.close();
// 遍历map
for (auto& it : myMap2) {
std::cout << it.first << ": " << it.second << std::endl;
}
return 0;
}
```
在这个例子中,我们首先创建了一个`std::map`对象,并插入了三个键值对。然后使用`std::fstream`将map写入文件。写入的过程中,我们需要使用`reinterpret_cast`将`std::map`对象转换为字符指针,然后再写入文件。接着,我们从文件中读取map,并使用`reinterpret_cast`将字符指针转换为`std::map`对象。读取完毕后,我们遍历`std::map`对象,并输出每个键值对的内容。需要注意的是,写入和读取的数据类型必须一致,否则可能会导致数据读取错误。
阅读全文