在很多應用中我們需要對數據進行保存,或是從介質上讀取數據,這就涉及到文件的操作。我們可以利用各種文件存取方法完成這些工作,但MFC中也提供了一種讀寫文件的簡單方法——“序列化”。序列化機制通過更高層次的接口功能向開發者提供了更利於使用和透明於字節流的文件操縱方法,舉一個例來講你可以將一個字串寫入文件而不需要理會具體長度,讀出時也是一樣。你甚至可以對字符串數組進行操作。在MFC提供的可自動分配內存的類的支持下你可以更輕松的讀/寫數據。你也可以根據需要編寫你自己的具有序列化功能的類。
序列化在最低的層次上應該被需要序列化的類支持,也就是說如果你需要對一個類進行序列化,那麼這個類必須支持序列化。當通過序列化進行文件讀寫時你只需要該類的序列化函數就可以了。
怎樣使類具有序列化功能呢?你需要以下的工作:
該類從CObject派生。
在類聲明中包括DECLARE_SERIAL宏定義。
提供一個缺省的構造函數。
在類中實現Serialze函數
使用IMPLEMENT_SERIAL指明類名和版本號
下面的代碼建立了一個簡單身份證記錄的類,同時也能夠支持序列化。
in H
struct strPID
{
char szName[10];
char szID[16];
struct strPID* pNext;
};
class CAllPID : public CObject
{
public:
DECLARE_SERIAL(CAllPID)
CAllPID();
~CAllPID();
public:// 序列化相關
struct strPID* pHead;
//其他的成員函數
void Serialize(CArchive& ar);
};
in CPP