C++从/到文件序列化/反序列化std :: map <int,int>

tmi*_*hty 16 c++ serialization map

我有一个std :: map.

我想知道我是否可以使用fwrite将其写入文件(也可以从文件中读取),如果我需要分别写入/读取每个值.

我希望,因为没有什么特别的,这可能是可能的.

For*_*veR 27

使用boost::serialization一个线连载.标题:

boost/serialization/map.hpp
Run Code Online (Sandbox Code Playgroud)

代码示例

#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;
}
Run Code Online (Sandbox Code Playgroud)

输出:

g++ -o new new.cpp -std=c++0x -lboost_serialization
./new
1
Run Code Online (Sandbox Code Playgroud)

对于文件只是使用std::ifstream/std::ofstream而不是std::stringstream和可能binary_archive,而不是text_archive.