C++序列化方案选型及boost序列化使用方法

一、几种种序列化方案

二、几种方案对比总结

  1. MFC和.Net框架的方法适用范围很窄,只适用于Windows下,且.Net框架方法还需要.Net的运行环境。
  2. Google Protocol Buffers效率较高,但是数据对象必须预先定义,并使用protoc编译,适合要求效率,允许自定义类型的内部场合使用。
  3. Boost.Serialization 使用灵活简单,而且支持标准C++容器
  4. MFC的效率较低,但是结合MSVS平台使用最为方便
  5. 开源方案适配数据类型少。

三、选型结论

为了考虑平台的移植性、适用性和高效性,推荐大家使用Google的protobuf和Boost的序列化方案。

四、boost序列化使用

cmakelist.txt

find_package(Boost 1.67 COMPONENTS serialization REQUIRED)
target_link_libraries(main ${Boost_SERIALIZATION_LIBRARY_RELEASE})

main.cpp

#include <boost/serialization/string.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/iostreams/stream.hpp>

void TestArchive1()
{
    int d1 = 2;
	double d3 = 2176.2;
    std::ostringstream os;
    boost::archive::text_oarchive oa(os);
    oa << d1 << d3;//序列化到一个ostringstream里面
    std::string content = os.str();//content保存了序列化后的数据。
 
    int d2= 0;
	double d4 = 0;
    std::istringstream is(content);
    boost::archive::text_iarchive ia(is);
    ia >> d2 >> d4;//从一个保存序列化数据的string里面反序列化,从而得到原来的对象。
 
    std::cout << "data: " << d2  << " " << d4<< "\n";
}

五、参考资料

1、C++对象序列化四种方案简介与选型
2、boost序列化用法
3、GITHUB网友序列化工具
4、c++ 消息字节流数据读和写
5、C++ 字节流 CByteBuffer

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值