C++ ,boost, serialization,序列化,生成xml文件

[复制链接]
查看11 | 回复1 | 2010-12-26 16:13:10 | 显示全部楼层 |阅读模式
本人是c++的小菜,但是做项目要用c++实现序列化,有一个示例代码,但是我百度了很久还是觉得看不太懂,也不知道怎么用,恳请各位大侠帮忙把下面这个程序写个注释,让我知道哪句话是干嘛的,我应该怎么用这个示例代码写自己的序列化程序,小弟将不胜感激。
#include "stdafx.h"
#include
#include
#include
#include
#pragma comment(lib,"C://libboost_serialization-vc80-mt-gd-1_45.lib")
////////////////////////////////////////////////////////////////////////////////
class subtest//类声明
{
public:
subtest()//构造函数
: mvalue1(-1)//成员变量初始化
{
}
template//这个是干嘛的?
void serialize( archive &ar , unsigned int filever )//声明成员函数,但是括号里面那个变量是干嘛的看不懂啊?
{
ar & BOOST_SERIALIZATION_NVP(mvalue1);//这是干嘛的?
ar & BOOST_SERIALIZATION_NVP(nvalue1);//这是干嘛的?
}
int mvalue1; //这是类的成员函数吧?
double nvalue1;//这是类的成员函数吧?
};
////////////////////////////////////////////////////////////////////////////////
class test
{
public:
test()
: mvalue(-1)
{
}
template
void serialize( archive &ar , unsigned int filever )
{
ar & BOOST_SERIALIZATION_NVP(mvalue);
ar & BOOST_SERIALIZATION_NVP(nvalue);
ar & BOOST_SERIALIZATION_NVP(obj);
}
int mvalue;
double nvalue;
subtest obj;
};
////////////////////////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
/**
* save archive
*/
{
std::vector ints;
test* a = new test;//创建一个test这个类的实例
ints.push_back( 100 );//把vector那个数组长度增长100?瞎说的,不懂
ints.push_back( 200 );
std::ofstream ofs("c://test.xml");//把生成的xml文件存到这个路径下面
boost::archive::xml_oarchive oa(ofs);
int nvalue = 106;
a->nvalue = 0.1111;//成员变量赋值
a->obj.mvalue1=123;
a->obj.nvalue1=0.222;
oaints;
std::ifstream ofs("c://test.xml");
boost::archive::xml_iarchive oa(ofs);
int nvalue = 0;
test* a = NULL;
oa >> BOOST_SERIALIZATION_NVP(nvalue);
oa >> BOOST_SERIALIZATION_NVP(ints);
oa >> BOOST_SERIALIZATION_NVP(a);
for( std::vector::iterator i = ints.begin() ; i != ints.end() ; i++ )
{
printf("the value of vector %d\n",*i);
}
}
return 0;
}
希望每句话都给加个注释喔,说的基础一点。。。灰常感谢大家喔

回复

使用道具 举报

千问 | 2010-12-26 16:13:10 | 显示全部楼层
竟然问到我。我知道的都告诉你吧,序列化这东西我也没做过,不过对于你的问题我还是能答个大概,过后自己找下资料吧#include "stdafx.h"#include #include #include #include #pragma comment(lib,"C://libboost_serialization-vc80-mt-gd-1_45.lib")/////////////////////////////////
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行