boost系列化c++对象

来源:互联网 发布:农行掌上银行网络异常 编辑:程序博客网 时间:2024/06/10 20:43
#include <fstream>#include <map>#include <vector>using namespace std;#include <boost/archive/text_oarchive.hpp>#include <boost/archive/text_iarchive.hpp>#include <boost/archive/binary_oarchive.hpp>#include <boost/archive/binary_iarchive.hpp>#include <boost/serialization/access.hpp>#include <boost/serialization/map.hpp>#include <boost/serialization/vector.hpp>class testclass;struct myinfo;namespace boost{namespace serialization{template<typename Archive>void serialize(Archive & ar, testclass & g, const unsigned int version){ar & g.m_mymap;}template<typename Archive>void serialize(Archive & ar, myinfo & g, const unsigned int version){ar & g.age;ar & g.name;}}}typedef struct myinfo{int age;string name;}myinfo;class testclass{public:void setData(){myinfo info = {100, "chenhuizong"};vector<myinfo> vec;vec.push_back(info);vec.push_back(info);m_mymap["1"] = vec;m_mymap["2"] = vec;m_mymap["3"] = vec;}testclass(){};map<string, vector<myinfo> > m_mymap;};int main() {std::ofstream ofs("./sel.dat", std::ios::binary);testclass g;g.setData();{boost::archive::binary_oarchive oa(ofs);oa << g;}testclass newg;{std::ifstream ifs("./sel.dat", std::ios::binary);boost::archive::binary_iarchive ia(ifs);ia >> newg;}return 0;}

0 0
原创粉丝点击