测试了下boost的序列化反序列化功能
- // 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;
- }
http://blog.csdn.net/lee353086/article/details/38421095
测试了下boost的序列化反序列化功能的更多相关文章
- 序列化 反序列化 MessagePack for C#
阅读目录 快速序列化组件MessagePack介绍 简介 使用 快速开始 分析器 内置的支持类型 对象序列化 DataContract兼容性 序列化不可变对象(序列化构造器) 序列化回调 Union ...
- 一个更好的C++序列化/反序列化库Kapok
KapokFAQ1.Kapok的特点简单,易用,header-only,只需要引用Kapok.hpp即可:高效,初步测试性和messagepack相当.它是纯c++11实现,因此需要支持C++11的编 ...
- 5) ModelSerializer(重点) 基表 测试脚本 多表关系建外键 正反查 级联 插拔式连表 序列化反序列化整合 增删查 封装response
一.前戏要做好 配置:settings.py #注册drf INSTALLED_APPS = [ # ... 'api.apps.ApiConfig', 'rest_framework', ] # ...
- day71:drf:API接口&Restful API规范&Django Rest Framework&drf中的序列化和反序列化功能
目录 1.web应用模式 2.API接口 3.Restful API规范 4.序列化 5.Django Rest Framework 1.drf的简单介绍 2.drf的特点 3.如何安装drf 4.d ...
- 给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化
给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化 标签: ajaxdictionaryjsonobject服务器function 2012-07-25 18:41 2242人阅读 ...
- springboot学习(三)——http序列化/反序列化之HttpMessageConverter
以下内容,如有问题,烦请指出,谢谢! 上一篇说掉了点内容,这里补上,那就是springmvc的http的序列化/反序列化,这里简单说下如何在springboot中使用这个功能. 使用过原生netty ...
- C语言JSON序列化/反序列化
最近想找一个C语言处理嵌套结构体和结构体数组的json库,理想的是能够很容易处理复杂结构体嵌套,并且使用简单的,但是没找到比较合适的,于是打算自己封装一个: 两个问题: C语言结构体本身没有元数据,这 ...
- python_way ,day5 模块,模块3 ,双层装饰器,字符串格式化,生成器,递归,模块倒入,第三方模块倒入,序列化反序列化,日志处理
python_way.day5 1.模块3 time,datetime, json,pickle 2.双层装饰器 3.字符串格式化 4.生成器 5.递归 6.模块倒入 7.第三方模块倒入 8.序列化反 ...
- C#之你懂得的序列化/反序列化
前言:写此文章一方面是为了巩固对序列化的认识,另一方面是因为本人最近在面试,面试中被问到“为什么要序列化”.虽然一直在使用,自己也反复的提到序列化,可至于说为什么要序列化,还真的没想过,所以本文就这样 ...
随机推荐
- jboss-as-7.1.1.Final与jdk1.8不兼容解决方案
今天在安装1.8电脑上装了jboss7.1.1,配置好了运行的时候就是无法启动,最后得出答案是:jboss-as-7.1.1.Final与jdk1.8不兼容 1.如果你的电脑安装了jdk1.8,那么在 ...
- 《从零開始学Swift》学习笔记(Day 1)——我的第一行Swift代码
Swift 2.0学习笔记--我的第一行Swift代码 原创文章,欢迎转载. 转载请注明:关东升的博客 当第一次看到以下代码时我石化了.这些代码是什么东东?单词拼出来的? import Foun ...
- jquery平滑滚动页面
滚动到顶部 $('.scroll_top').click(function(){$('html,body').animate({scrollTop: '0px'}, 800);}); 滚动到指定位置 ...
- jquery pagination分页的两种实现方式
原文链接:http://blog.csdn.net/qq_37936542/article/details/79457012 此插件是jQuery的ajax分页插件.如果你用到此插件作分页的时候,涉及 ...
- Qt5.4.2编译 qtpropertybrowser-2.51(从4修改到5的除错过程)
qtpropertybrowser是一个洛基亚时代的一个产物,其实它就是QtDesigner侧栏那种样子而已.网上大部分的都只适用于Qt4,今天头脑发热想用Qt5编译一下,发觉一大堆错误,因为Qt4有 ...
- HashTable 解决碰撞(冲突)的方法 —— 分离链接法(separate chaining)
1. ListNode 及 HashTable 的类型声明 声明 typedef int ElementType; typedef unsigned int Index; struct ListNod ...
- 我的Java开发学习之旅------>Java经典排序算法之归并排序
一.归并排序 归并排序是建立在归并操作上的一种有效的排序算法,该算法是採用分治法(Divide and Conquer)的一个很典型的应用.将已有序的子序列合并,得到全然有序的序列.即先使每一个子序列 ...
- javascript中隐藏显示的样式表属性
display属性 隐藏不占据位置 visibility属性 隐藏占据位置 //使用display的样式属性 隐藏 显示 //隐藏后不占据文档流位置 function showAddForm(){ v ...
- java架构之项目结构(entity / DTO / VO)
定义类的讲究 关系示例 定义类的讲究 ejb Enterprise JavaBean(EJB),企业javaBean.是java的核心代码,分别是会话Bean(Session Bean).实体Bean ...
- 电子商务系统的设计与实现(十):DWZ框架与第三方分页组件整合
晚上,就是刚刚,在后端管理系统中使用DWZ框架. 先是,直接使用官网网站的Demo,dwz-jui,与编程语言无关的纯静态的那个原始项目. 很快就搭建好了左侧菜单,打开菜单后,出现Tab页面,然后显示 ...