测试了下boost的序列化反序列化功能
来源:互联网 发布:淘宝小卖家死了大半 编辑:程序博客网 时间:2024/06/06 02:09
// testSerialization.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <boost/archive/text_oarchive.hpp>#include <boost/archive/text_iarchive.hpp>#include <boost/serialization/vector.hpp>#include <string>#include <vector>#include <iostream>#include <sstream> #include <fstream>/*标题:boost的序列化反序列化功能测试环境:VS2010sp1、boost 1.55参考资料:[1]《Boost中支持序列化反序列化的库--boost.serialization 》http://blog.csdn.net/oracleot/article/details/4280084[2]《What does BOOST_SERIALIZATION_NVP do when serializing object?》http://stackoverflow.com/questions/8532331/what-does-boost-serialization-nvp-do-when-serializing-object*/struct MyRecord{std::string a;std::string b;//为使当前的结构能支持序列化,得加入下面的代码段private:friend class boost::serialization::access;template<class Archive>void serialize(Archive & ar, const unsigned int version){ar & a;ar & b;}};struct MyData{int id;std::string strName;std::string strValue;MyData() {}MyData(int id, std::string strName, std::string strValue){this->id = id;this->strName = strName;this->strValue = strValue;}std::vector<MyRecord> listMR;private:friend boost::serialization::access; //声明友元,授予访问权限template<typename Archive>void serialize(Archive &ar,const unsigned int version) //序列化函数{ar & id;ar & strName & strValue;ar & listMR;}};void printTest(MyData &mt){std::cout<<"a="<<mt.id<<" uid="<<mt.strName.c_str()<<" usr="<<mt.strValue.c_str()<<std::endl;std::vector<MyRecord>::iterator iter = mt.listMR.begin();while(iter!=mt.listMR.end()){std::cout<<"=> "<<iter->a.c_str()<<" "<<iter->b.c_str()<<std::endl;iter++;}}int _tmain(int argc, _TCHAR* argv[]){std::stringstream ss;//序列化MyData p1(11,"anderson","neo"); //被序列化的对象//为被序列化对象添加两条记录MyRecord mr,mr2;mr.a="apple",mr.b="第一条记录";mr2.a = "this is b",mr2.b = "第二条记录";p1.listMR.push_back(mr);p1.listMR.push_back(mr2);boost::archive::text_oarchive(ss) << p1; //序列化//序列化为xml形式要求中文为utf-8编码,否则打开文件是乱码//std::stringstream ss;//std::ofstream ofs("d:\\a.xml");//boost::archive::xml_oarchive oa(ofs);//oa << BOOST_SERIALIZATION_NVP(p1);//反序列化MyData p2; //被反序列化的对象boost::archive::text_iarchive(ss) >> p2; //反序列化printTest(p2);std::cout << "序列化后的=>" <<ss.str() << std::endl;;return 0;}
0 0
- 测试了下boost的序列化反序列化功能
- Boost中支持序列化反序列化的库--boost.serialization
- Boost中支持序列化反序列化的库--boost.serialization
- boost serialization 序列化/反序列化 详细用法
- javascript下的json 序列化及反序列化
- 利用boost的serialization库实现c++对象的序列化与反序列化
- Java的序列化、反序列化
- 序列化反序列化的使用
- iOS的序列反序列化
- std::map容器序列化、反序列化测试
- 序列化反序列化
- 序列化 反序列化
- 序列化反序列化
- 序列化反序列化
- 序列化、反序列化
- 序列化、反序列化
- 序列化/反序列化
- 序列化/反序列化
- android中Logcat的深层理解
- ubuntu進入單用戶模式
- 基于 xNet 通信框架搭建的简易分布式系统 Demo ~~
- 音频制作学校的注意事项
- 论动态注册广播的利弊
- 测试了下boost的序列化反序列化功能
- AspectJ Aop 面向切面
- 基于接口编程。
- 音频到文本转录有用的转录服务
- Oracle Impdp Failed on RAC with ORA-31640, ORA-19505, ORA-27037, Linux-x86_64 Error: 2: No such file
- Oracle计算时间差函数
- Unity3D自带MonoDevelop编辑器断点调试教程
- GCD code block
- 音频会议服务类型可用在印度