我有一个std ::地图。
我想知道是否能在它写入一个文件(并且还从文件中读取它)等使用的fwrite 1行,或者如果我需要写/读分开的每个值。
我希望,既然是没什么特别的,这是可能的。
我有一个std ::地图。
我想知道是否能在它写入一个文件(并且还从文件中读取它)等使用的fwrite 1行,或者如果我需要写/读分开的每个值。
我希望,既然是没什么特别的,这是可能的。
使用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。