#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. xcode5下cocos2dx横竖屏设置

    我们在开发一款游戏之前一定会考虑的一件事就是,我们的游戏是支持横屏还是竖屏,又或者是横竖屏都支持.那么如何在xcode中对项目进行设置呢?下面我就在xcode5.1.1中利用cocos2dx2.2.3 ...

  2. javascript之正则表达式总结

    了解RegExp类型: ECMAScript通过RegExp类型来支持正则表达式. var expression=/pattern/flags; 正则表达式的模式(pattern)部分: 可以是任何简 ...

  3. 杭电ACM2084--数塔

    http://acm.hdu.edu.cn/showproblem.php?pid=2084 这种DP是相对容易的,一个二维数组,遍历一次,计算结果,存在指定位置. 本题关键代码是: a[i-1][j ...

  4. Static的使用

    (一) 当它用于函数定义时,或用于代码块之外的变量声明时,static关键字用于修饰修改标识符的连接属性,从external改为internal,但是标识符的存储类型和作用域不受影响.用这种方式声明的 ...

  5. MQTT开发小记(一)

    最近在协助公司硬件组进行MQTT协议的嵌入式SDK包开发. 简述一下MQTT MQTT简单的来说是一种订阅/发布模式的通信形式,一般分为客户端和服务器端. MQTT服务器端可以简单理解为一个消息中转站 ...

  6. 使用tortoise git管理gitolite版本库

    gitolite-admin是用于管理git版本库的版本库,将其从服务器上clone下来. 使用tortoise git clone的时候需要指定私钥,私钥的格式是ppk的,需要使用putty的PUT ...

  7. windows下apache配置https

    1.下载带有openSSL的apache安装包,我下载的为apache_2.2.11-win32-x86-openssl-0.9.8i.msi,安装后确认一下bin路径下的openssl.exe,ss ...

  8. [大牛翻译系列]Hadoop(18)MapReduce 文件处理:基于压缩的高效存储(一)

    5.2 基于压缩的高效存储 (仅包括技术25,和技术26) 数据压缩可以减小数据的大小,节约空间,提高数据传输的效率.在处理文件中,压缩很重要.在处理Hadoop的文件时,更是如此.为了让Hadoop ...

  9. PHP操作MongoDB简明教程(转)

    转自:http://blog.sina.com.cn/s/blog_6324c2380100ux2m.html MongoDB是最近比较流行的NoSQL数据库,网络上关于PHP操作MongoDB的资料 ...

  10. 【面试虐菜】—— Apache知识整理

    Apache性能调优1 Apache 部分:1. 移除不用的模块.2. 使用 mod_disk_cache NOT mod_mem_cache .3. 扁平架构配置mod_disk_cache.4.  ...