`

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.Serialization提供了两种主要的序列化方式:文本序列化和二进制序列化。文本序列化通常更易于阅读和调试,但占用的存储空间较大;而二进制序列化则更为紧凑,节省空间,但可能难以直接查看。 1. **文本序列化...

    Boost序列化

    ### Boost序列化详解 在软件开发领域,尤其是C++编程中,序列化是一个非常重要的概念。它涉及到将程序中的对象转换成一种可以持久存储或通过网络传输的形式。这对于需要保存对象状态的应用、分布式系统间的数据交换...

    boost序列化库

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

    boost类序列化

    boost类序列化

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

    Boost.Serialization库是C++社区广泛使用的序列化工具,它提供了丰富的功能来处理各种类型的对象,包括智能指针。在C++11及更高版本中,智能指针(如`std::unique_ptr`,`std::shared_ptr`和`std::scoped_ptr`)被...

    C++ boost库,最新版本

    Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost社区的发起人Dawes本人就是C++标准委员会的成员之一。大部分boost库功能的使用只需包括相应头文件即可,少数...

    Boost socket通信序列化

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

    Linux下Boost序列化问题解决

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

    深入实践Boost:Boost程序库开发的94个秘笈

    6. **Boost序列化**:允许对象的状态被序列化到文件或流中,以便存储和恢复,这对于持久化数据和网络通信非常有用。 7. **Boost.Asio**:是异步I/O库,支持网络编程,包括TCP/IP、UDP、Unix域套接字,以及定时器和...

    Boost::Serialization存储C++对象

    Boost::Serialization是C++库中的一个模块,它提供了一种序列化和反序列化对象的能力。这个库使得能够将复杂的C++对象结构保存到文件、数据库或者网络流中,然后在需要时重新加载,这对于数据持久化、版本控制以及跨...

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

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

    C++序列化组件

    5. **Boost.Serialization库**: Boost是C++的一个知名库集合,其中的Serialization库提供了强大的序列化功能,支持多种序列化格式,并且兼容多种C++特性,如多态和模板。 6. **protobuf**: Google开源的Protocol ...

    个人编译的boost1.49库,MinGW4.5,Release

    `libboost_serialization-mgw45-mt-1_49.dll`是Boost序列化库,它允许开发者将对象状态保存到文件或内存流中,然后在需要时恢复这些状态,这在数据持久化、跨进程通信和网络传输中非常实用。 `libboost_date_time-...

    序列化、反序列化源码

    3. **私有成员**:序列化和反序列化可能需要访问类的私有成员,这可以通过友元函数或者使用`boost::serialization`库等方式实现。 4. **效率**:优化序列化和反序列化过程以减少不必要的计算和内存开销。 5. **错误...

    boost c++ application development cookbook 2nd 2018

    9. **其他Boost组件**:除了上述模块,书中还会涉及Boost序列化、智能指针、正则表达式、数学函数等其他Boost组件的使用。 通过阅读《Boost C++应用开发实战指南》第二版并实践其中的代码示例,开发者不仅可以深入...

    vc++实现反射式数据库模版(3.序列化、反序列化与消息映射)

    4. **序列化/反序列化实现**:实现序列化和反序列化功能,使对象能够以某种格式(如XML、JSON或二进制)在内存和文件之间进行转换。 5. **消息映射的动态构建**:创建动态的消息映射系统,允许在运行时添加、删除或...

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

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

    vc++学生信息和课程信息序列化

    在C++中,还可以使用第三方库来简化序列化工作,如Boost.Serialization或者Google Protocol Buffers。这些库提供了强大的功能,支持各种复杂的类型和数据结构,并且能生成跨平台兼容的序列化数据。 实验6可能涵盖了...

    Visual C++中对象的序列化与文件I-O研究.rar_c++对象序列化_对象序列化_序列化

    Boost.Serialization 是一个强大的库,它支持多种类型的序列化,包括基本类型、容器、智能指针以及用户自定义类型。使用这个库可以简化序列化工作,并且支持XML、文本和二进制格式。 3. 使用标准模板库(STL): ...

Global site tag (gtag.js) - Google Analytics