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();