#include <iostream>
#include <boost/serialization/serialization.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <sstream>
#pragma warning (disable: 4244) //解决boost 中binary序列化:“std::streamsize”转换到“size_t”
using namespace std;
//这里的输入输出,从stringstream到ia或者oa
//序列化,文本模式可以用char*然后分配内存,个人认为是流的方式string中是没有/0的然后strcpy(*json, ss.str().c_str());就会出错,下面的解析就有问题
//void packetage(char** json, int& len)//不能直接用char* json,因为传递的指针的值会变,需要传递指针的地址
//{
// std::stringstream ss;
// //binary_oarchive表示输出到ss中,这也是用stringstream作为中介的,估计也是用stringstream作为存储的,从oa输出到ss中
// boost::archive::text_oarchive oa(ss);
// int a = 1;
// int b = 2;
// oa << a << b;
// *json = new char[ss.str().size() + 1];
// strcpy(*json, ss.str().c_str());
// len = ss.str().size();
//}
//对于流的方式只能只能传递一个string,然后json = ss.str();
void packetage(std::string& json, int& len)//不能直接用char* json,因为传递的指针的值会变,需要传递指针的地址
{
std::stringstream ss;
//binary_oarchive表示输出到ss中,这也是用stringstream作为中介的,估计也是用stringstream作为存储的,从oa输出到ss中
boost::archive::binary_oarchive oa(ss);
int a = ;
int b = ;
oa << a << b;
json = ss.str();
//strcpy(*json, ss.str().c_str());//个人感觉这里数据就出错了
len = ss.str().size();
} //void parse(char* json, int len)
//{
// //由于这个是流的方式而不是文本的方式,所以需要长度
// //std::stringstream ss(json);//这种方式不行,因为是流,对于文本模式可以
// std::stringstream ss(json);
// //ss.write(json, len);//需要根据长度手动写入到ss中
// boost::archive::text_iarchive ia(ss);//这个是表示输入,只是从stringstream输入到ia中
// int a;
// int b;
// ia >> a >> b;
//} void parse(const char* json, int len)
{
//由于这个是流的方式而不是文本的方式,所以需要长度
//std::stringstream ss(json);//这种方式不行,因为是流,对于文本模式可以
std::stringstream ss;
ss.write(json, len);//需要根据长度手动写入到ss中
boost::archive::binary_iarchive ia(ss);//这个是表示输入,只是从stringstream输入到ia中
int a;
int b;
ia >> a >> b;
} int main()
{
//char* json = NULL;
std::string json;
int len = ;
packetage(json, len);
parse(json.c_str(), len);//c_str()返回首字符的地址
getchar();
return ;
}

boost序列化的更多相关文章

  1. Boost 序列化

    原文链接: https://blog.csdn.net/qq2399431200/article/details/45621921 1. 编译器 gcc, boost 1.55 2.1第一个简单的例子 ...

  2. linux下Boost序列化问题解决

    由于项目需要,要使用boost,所以在网上找了一些例子帮助理解,其中遇到很多问题,再次总结记录一下.#include <boost/archive/text_oarchive.hpp> # ...

  3. 最经常使用的两种C++序列化方案的使用心得(protobuf和boost serialization)

    导读 1. 什么是序列化? 2. 为什么要序列化?优点在哪里? 3. C++对象序列化的四种方法 4. 最经常使用的两种序列化方案使用心得 正文 1. 什么是序列化? 程序猿在编写应用程序的时候往往须 ...

  4. boost serialize序列化

    boost序列化 #ifndef FND_SERI_H #define FND_SERI_H #include <boost/archive/text_oarchive.hpp> #inc ...

  5. 最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)

    导读 1. 什么是序列化? 2. 为什么要序列化?好处在哪里? 3. C++对象序列化的四种方法 4. 最常用的两种序列化方案使用心得 正文 1. 什么是序列化? 程序员在编写应用程序的时候往往需要将 ...

  6. c++序列化方法

    暂时使用boost 序列化, 目前我的测试基本都ok 只是对于c++11 shared ptr 没有测试成功,只能手工写下shared ptr 部分的序列化,也就是目前我对指针都不直接序列化,自己管理 ...

  7. 二进制序列化框架easypack发布啦!

    简介 easypack是基于boost.serialization的二进制序列化框架,使用极其方便. Examples 基本类型 int age = 20; std::string name = &q ...

  8. C++ | boost库 类的序列化

    是的,这是今年的情人节,一篇还在研究怎么用的文章,文结的时候应该就用成功了. 恩,要有信心 神奇的分割线 不知何时装过boost库的header-only库, 所以ratslam中的boost是可以编 ...

  9. 如何用boost::serialization去序列化派生模板类(续)

    在 如何用boost::serialization去序列化派生模板类这篇文章中,介绍了序列化派生类模板类, 在写測试用例时一直出现编译错误,调了非常久也没跳出来,今天偶然试了一下...竟然调了出来. ...

随机推荐

  1. Dicom格式文件解析器

    转自:http://www.cnblogs.com/assassinx/archive/2013/01/09/dicomViewer.html Dicom全称是医学数字图像与通讯,这里讲的暂不涉及通讯 ...

  2. Android App测试要点

         本文主要内容,转载自 http://www.51testing.com/html/04/344504-849373.html,      在这里,主要是整理一下app测试的总体思路,这里的a ...

  3. iOS 系统架构及常用框架

    1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多 2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer).媒体层(Media l ...

  4. NSS_10 EXTJS给弹出的子窗口传递参数

    在桌面程序中, 如果需要弹出一个子面板, 并且需要传一些参数给子面板, 我通常的作法就是:在子面板添加对应的数据成员,然后一个构造函数来接收这些参数并赋值级数据成员. 实现起来非常方便. 但是在Ext ...

  5. ASP.Net网站部署失败

    部署站点时候,出现如下错误 “/”应用程序中的服务器错误. ---------------------------------------------------------------------- ...

  6. 百度的domain命令到底有用吗?

    曾几何时,站长和seoer们在百度输入domain:xxxxxxxx的时候弹出的结果数量让多少人兴奋和失落,为什么我们对百度的domain命令如此着迷呢?因为我们都认为百度的domain命令是查询网站 ...

  7. mac OS X下git代码行统计命令

    1.统计某人的代码提交量,包括增加,删除 git log --author=-- --until=-- --pretty=tformat: --numstat | awk '{ add += $1 ; ...

  8. 精美舒适的对话消息提示框--第三方开源--SweetAlertDialog

    SweetAlertDialog(sweet-alert-dialog)是一个套制作精美.动画效果出色生动的Android对话.消息提示框 SweetAlertDialog(sweet-alert-d ...

  9. 在 SQL Server 中的网络数据库文件的支持说明

    其实就是一个学员问SQL Server 是否能存放的于NAS(UAC 的路径下). 官方的回答简略版本为:可以,需要满足一些强制性的硬件要求.但需要考虑一系列的性能的问题. http://suppor ...

  10. 10、WPF程序集

    WPF核心程序集 PresentationCore.dll:这个程序集定义了许多构成WPF GUI层基础的类型.例如包含WPF Ink API(pc笔针输入,手写输入)的支持.几个动画基元以及几个图形 ...