Boost中支持序列化反序列化的库--boost.serialization

本文介绍了Boost库中的serialization库,包括其特点如支持XML和二进制序列化、类版本号、深度指针存储等。讨论了使用过程中遇到的问题,如STL容器的序列化需要特定头文件,以及与<windows.h>冲突的解决办法。同时提出了对XML中属性意义和类型编码的疑问。提供了一个DBConfig类及其成员DBConfigItem的序列化和反序列化示例,以及序列化后的XML文件展示。
摘要由CSDN通过智能技术生成

Boost中支持序列化反序列化的库--boost.serialization

 

boost.serialization的特点

1.         支持XML和二进制两种形式

2.         支持类的版本号

3.         支持深度指针存储

4.         支持多个指针共享数据

5.         支持STL容器存储

6.         支持原生数组存储

7.         支持非侵入性的设计,序列化的类不需要继承特殊的类,不需要写特殊的方法(原来的类中要存储的属性必须共有)

 

我遇到的问题

1.         如果要存储STL容器,要引入头文件 #include <boost/serialization/vector.hpp>

2.         如果之前引入了<windows.h>,编译会出错,原因是windows.h中定义了min,max宏,我们可以在#include<windows.h>之前把min,max禁止,使用#define NOMINMAX。或者使用#undef min#undef max

 

 

我存在的疑问

XML中属性的意义尚不明确,手工添加数据可能有危险

XML中的类型用数字来表示,不知道读取原理,如果代码添加了新的类会不会对原有数据有影响

 

参考

详细说明见:$/boost_1_37_0/libs/serialization/doc/index.html

后面附了一个示例和一个生成的XML
附录A

///

//file : .h

 

#pragma once

#include <vector>

#include <boost/serialization/base_object.hpp>

#include <boost/archive/text_oarchive.hpp>

#include <boost/archive/text_iarchive.hpp>

#include <boost/serialization/vector.hpp>

 

using namespace std;

 

class DBConfigItem

{

public:

       DBConfigItem(const String& dsn,const String & usrName,const String & password,size_t connectCnt);

       DBConfigItem(const DBConfigItem & item);

       DBConfigItem();

       ~DBConfigItem();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值