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); //如果文件不存在則創建一個,否則只是往文件寫數據
????? 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();
?
}
總結
以上是生活随笔為你收集整理的MFC序列化(serial)简单例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: p3d gauge 尺寸问题
- 下一篇: 大疆Mavic 3无人机发布多项升级:文