当前位置:编程学习 > asp >>

MFC序列化(serial)简单例子

我们保存一些文本内容可以很简单的保存成一个文件就行了.但如果要把一些类对象信息保存起来,然后读取时用那些信息初始化一个类对象就比较复杂了.MFC提供了一个叫序列化的功能.可以把一个对象信息转化成二进制文件(或者xml文件)保存起来.
下面举一个简单的例子,假如有类CArwen,实例化一个对象,然后序列化该对象.最后反序列化,把保存的值再读出来初始化给一个对象.
 
1.先定义类CArwen
//头文件
class CArwen: public CObject
{
DECLARE_SERIAL(CArwen)
public:
virtual void Serialize(CArchive& ar);
int age;
CString name;
};
//cpp文件
IMPLEMENT_SERIAL(CArwen,CObject,1) //1是版本号,可以随便指定一个数值
 
void CArwen::Serialize(CArchive& ar)
{
if(ar.IsStoring()){ //序列化,保存信息.CArchive::store与此对应
ar<<age;
ar<<name;
}else //反序列化,读取信息
{
ar>>age;
ar>>name;
}
}
 
2.测试程序
#include "CArwen.h"
CString filePath = _T("D:\\app\\Arwen.dat") ;  //序列化把对象信息保存在该文件中
void TestSerializeArwen() //保存信息
{
      CArwen arwen;
      arwen.age = 24;
      arwen.name = _T("weiwenhp);  //如果没用unicode,就不用_T
      CFile fi;
      fi.Open(filePath , CFile::modeCreate|CFile::modeWrite); //如果文件不存在则创建一个,否则只是往文件写数据  www.zzzyk.com
      CArchive ar(&fi, CArchive::store);
      awen.Serialize(ar);   //序列化对象
      ar.Close();
      fi.Close();
}
 
void TestReadSerilizedArwn() //读取信息
{
CArwen arwen;
CFile fi;
fi.Open(filePath , CFile::Read);
CArchive ar(&fi, CArchive::load);
awen.Serialize(ar); //反序列化对象
ar.Close();
fi.Close();
 
}
补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,