utilizzare boost::serialization
per serializzare in una riga. Testata per esso:
boost/serialization/map.hpp
Codice esempio
#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;
}
uscita:
g++ -o new new.cpp -std=c++0x -lboost_serialization
./new
1
per il file semplicemente utilizzare std::ifstream/std::ofstream
invece di std::stringstream
e può essere binary_archive
, invece di text_archive
.
La serializzazione non è un compito completamente banale. Ma è stato fatto prima. Dai un'occhiata a [boost :: serialization] (http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/index.html) per esempio. Viene fornito con un codice pronto per serializzare i contenitori della libreria std, incluso 'std :: maps'. – juanchopanza
'fwrite' è un C-ismo. –