分类:
2008-10-13 16:11:13
#include
#include
//这个是定义了让他链接到动态库的
#define BOOST_DYN_LINK
//我们要序列化到XML文件中去
#include
#include
#include
//自己写的一个类,随手写的
class MyTestClass
{
//后面的友元函数用
friend std::ostream & operator<<(std::ostream &os, const MyTestClass &gp);
friend class boost::serialization::access;
int _degree;
int _hours;
int _seconds;
int _minutes;
//依次序来的
template
void serialize(Archive & ar, const unsigned int /* file_version */)
{
ar & BOOST_SERIALIZATION_NVP(_degree)
& BOOST_SERIALIZATION_NVP(_hours)
& BOOST_SERIALIZATION_NVP(_seconds)
& BOOST_SERIALIZATION_NVP(_minutes);
}
public:
//构造函数
MyTestClass(int degree,int hour,int seconds,int minutes)
{
_degree=degree;
_hours=hour;
_seconds=seconds;
_minutes=minutes;
}
MyTestClass(){}
};
std::ostream & operator<<(std::ostream &os, const MyTestClass &gp)
{
return os << ' ' << gp._degree << " " << gp._hours << " "<< gp._seconds <<" ";
}
//序列化到某个文件中去
template
void serialize_to(const T &t,const char * filename)
{
std::ofstream ofs(filename);
boost::archive::xml_oarchive oa(ofs);
oa << BOOST_SERIALIZATION_NVP(t);
}
//从某个文件读出来
template
void serialize_from(T &t,const char * filename)
{
std::ifstream ifs(filename);
boost::archive::xml_iarchive ia(ifs);
ia >> BOOST_SERIALIZATION_NVP(t);
}
int main(int argc,char *argv[])
{
//创建一个实例
MyTestClass test1(15,12,13,14);
//保存到一个XML文件中去
serialize_to
//新建一个没赋值的实例
MyTestClass test;
//从文件中读出来
serialize_from
//打印出这个类的内容。
std::cout<
}
好了,这样就完成了,用起来真是好简单啊。
archive一共有下面的一些:
// a portable text archive
// saving
// loading
// a portable text archive using a wide character stream
// saving
// loading
// a non-portable native binary archive
// saving
// loading
// a portable XML archive,当然了,推荐使用这个啦。
// saving
// loading
// a portable XML archive which uses wide characters - use for utf-8 output
// saving
// loading
这个仅仅是简单使用,还有复杂的,如stl container的使用,请自行参阅文档