我有一个 std::map。
我想知道是否可以使用 fwrite 将其写入文件(也可以从文件中读取),或者是否需要分别写入/读取每个值。
我希望因为没什么特别的,这可能是可能的。
我有一个 std::map。
我想知道是否可以使用 fwrite 将其写入文件(也可以从文件中读取),或者是否需要分别写入/读取每个值。
我希望因为没什么特别的,这可能是可能的。
用于boost::serialization
在一行中序列化。它的标题:
boost/serialization/map.hpp
代码示例
#include <map>
#include <sstream>
#includ <iostream>
#include <boost/serialization/map.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
int main()
{
std::map<int, int> map = {{1,2}, {2,1}};
std::stringstream ss;
boost::archive::text_oarchive oarch(ss);
oarch << map;
std::map<int, int> new_map;
boost::archive::text_iarchive iarch(ss);
iarch >> new_map;
std::cout << (map == new_map) << std::endl;
}
输出:
g++ -o new new.cpp -std=c++0x -lboost_serialization
./new
1
对于文件,只需使用std::ifstream/std::ofstream
而不是,std::stringstream
并且可能是binary_archive
,而不是text_archive
。
没有一个单行来序列化地图。您需要单独编写每个键/值对。不过,这实际上并不比 for 循环复杂多少。
使用 boost,可能有一种方法,但我不熟悉确切的 API。