`

boost 序列化

阅读更多
在用boost 二进制序列化类的时候,需要注意动态调用文件打开标志std::ios::binary:


The flag std::ios::binary is required only in Windows, where the default mode (ascii) would translate \n\r to \n (and vice versa), thus corrupting any data that is not textual.

#include <boost/serialization/string.hpp>
#include "boost/archive/binary_oarchive.hpp"
#include "boost/archive/binary_iarchive.hpp"
#include "boost/iostreams/stream.hpp"
#include <boost/serialization/version.hpp>

typedef struct tagWorkStruct
{
	string groundTruthFile;
	string jpegFile;
	int workId;
}WorkStruct;

template<class Archive>
void serialize(Archive &ar, AddNewCardWorkStruct &g, const unsigned int version)
{
	ar & g.groundTruthFile;
	ar & g.jpegFile;
	ar & g.workId;
}


//写入文件
string fileName = "test.dat";
ofstream os(fileName.c_str(), std::ios::binary);
if (!os.fail())
{
    try
    {
        WorkStruct tempStruct;
        boost::archive::binary_oarchive oa(os);
        oa << tempSturct;
    }
    catch(...) 
    {
    }
}


//读取文件
ifstream is(dataFileName.c_str(), std::ios::binary);
if (!is.fail())
{
   try
   {
	WorkStruct tempStruct;
	boost::archive::binary_iarchive ia(is);
	ia >> tempStruct;
   }
   catch (...)//boost::archive::archive_exception
   {
   }
}
分享到:
评论

相关推荐

    boost序列化库

    一个支持状态存储的库。常用于乐观时间仿真及状态的回退与保存。

    boost类序列化

    boost类序列化

    Boost序列化

    Boost序列化.C++对象到磁盘,已解决内存不足的问题

    基于boost的序列化与反序列化

    1、包含文件和二进制两种序列化的方式 2、支持类的序列化和STL容器的序列化 3、支持序列化的流自定义(示例中使用的是std::stringstream,也可以使用其他的流)

    C++11 下使用 Boost.Serialization 库实现智能指针的序列化

    C++11 下使用 Boost.Serialization 库实现智能指针的序列化

    Boost socket通信序列化

    解决socket网络中通信的序列化和反序列化问题,很好的实例

    Linux下Boost序列化问题解决

    由于项目需要,要使用boost,所以在网上找了一些例子帮助理解,其中遇到很多问题,再次总结记录一下。 #include &lt;boost&gt; #include &lt;boost&gt; #include &lt;boost&gt; #include #include std::stringstream ss; void...

    超越原始的结构体——序列化c++设计消息协议(C++asio网络库相关)

    如果服务器和客户端都是用C++语言写的就可以用序列化方法将数据存放到流...以下是用boost序列化库写的一个例子: 可以用boost自带的serialization::access来使用序列化C++ 序列化处理类: //SerilizationObject.cpp cl

    java8看不到源码-troy:用于C++非pod结构的自动序列化程序,基于C++17特性结构化绑定、constexprif和boost预处理

    如果你想实现你序列化alothgrim,请参考和 其他序列化的区别 方法 跨语言 需要修改代码 容器支持 记忆 特洛伊 通过你的alothgrim 不 是的 低的 原型/节俭 是的 需要写原型 只有矢量和地图(适用于 proto3) 高的

    boost-serialization-examples

    Boost序列化示例 简而言之,序列化就是将任何数据结构转换为一种格式,该格式允许将数据写入支持文件(文件,套接字等)。 Boost提供了一个序列化库,该库带有针对POD和stl类型的开箱即用的序列化,但是它易于使用...

    json序列化的库Kapok.zip

    kapok是一个高性能跨平台的对象-json序列化的库,对象序列化后是标准的json格式,json格式的字符串可以直接反序列化为对象。简单,易用,header-only,只需要引用Kapok.hpp即可。它由c 14实现,因此需要支持C 14的...

    Boost::Serialization存储C++对象

    此压缩包包含12个项目,每个项目都着重讲解Boost::Serialization一个方面的使用技巧,有详细的代码介绍具体使用方法。

    qtplatz:Qt-Platz(基于Qt的科学软件基金会)

    造访 建立程序 ... 可以在较新版本的boost,打开由旧版本的boost序列化的文件boost,但是没有反向兼容性。 要检查boost_serialization的版本,请参阅文件boost-source-dir/libs/serialization/src/b

    cereal:C++实现的开源序列化库

    闲来无事发现了一个基于C++实现的序列化工具,相比于其他(比如Boost serialization或Google protobuf,恰巧都用过,以后再介绍),使用简单,感觉不错,下面做个摸索。  cereal介绍  cereal是一个开源的(BSD ...

    nodescan:异步扫描库

    它需要使用 boost 序列化支持进行编译(有关更多信息,请参阅 libleeloo 的 README) 升压Python 随机提升 升压日志 在基于 debian 的系统下,您可以执行以下操作: # apt-get install boost-{python,random,log...

    Boost程序库探秘 深度解析C++准标准库第2版

    深度解析C++准标准库(第2版)》基于Boost 1.54版,深入探讨了其中的许多重要组件,包括迭代器、函数对象、容器、流处理、序列化以及C++语言中最复杂最具威力的模板元编程,并专辟一章详细阐述Boost的开发实例,具有...

    Python实现CatBoost时间序列预测(完整源码和数据)

    1.Python实现CatBoost时间序列预测(完整源码和数据) anaconda + pycharm + python +Tensorflow 注意事项:保姆级注释,几乎一行一注释,方便小白入门学习! 2.代码特点:参数化编程、参数可方便更改、代码编程思路...

    monero-serialize:Monero序列化python库,支持区块链,Boost和RPC格式

    Monero Python序列化库 该库为Monero类型提供了基本的序列化逻辑,用于事务处理和事务签名中。 主要支持与Monero BEGIN_SERIALIZE_OBJECT()等效的二进制序列化。 该序列化机制用于区块链实体序列化。 增加了可移植...

    febird C++ 库(附带所有源码)

    febird 实现了一个序列化框架(对比boost.serializaiton/google.protocolbuffer),可以用在协议解析,大/小数据的序列化,有极高的性能(比boost.binary_archive快30~80倍),甚至对于非常小的对象,例如只有几个...

Global site tag (gtag.js) - Google Analytics