Chinaunix首页 | 论坛 | 博客
  • 博客访问: 818628
  • 博文数量: 756
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:40
文章分类

全部博文(756)

文章存档

2011年(1)

2008年(755)

我的朋友

分类:

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(test1,"faint.xml");

//新建一个没赋值的实例

 MyTestClass test;

//从文件中读出来
 serialize_from(test,"faint.xml");

//打印出这个类的内容。
 std::cout< return 1;
}

好了,这样就完成了,用起来真是好简单啊。
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的使用,请自行参阅文档


--------------------next---------------------

阅读(592) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~