CArchive沒有基類
CArchive允許以一個永久二進制(通常爲磁盤存儲)的形式保存一個對象的複雜網絡,它可以在對象被刪除時,還能永久保存。可以從永久存儲中裝載對象,在內存中重新構造它們。使得數據永久保留的過程就叫作“串行化”。
可以把一個歸檔對象看作一種二進制流。象輸入/輸出流一樣,歸檔與文件有關並允許寫緩衝區以及從硬盤讀出或讀入數據。輸入/輸出流處理一系列ASCII字符,但是歸檔文件以一種有效率、精練的格式處理二進制對象。
必須在創建一個CArchive對象之前,創建一個CFile對象。另外,必須確信歸檔文件的裝入/存儲與文件的打開模式是兼容的。每一個文件只限於一個活動歸檔文件。
當構造一個CArchive對象時,要把它附加給表示一個打開文件的類CFile(或派生類)的對象上。還要指定歸檔文件將用於裝載還是存儲。CArchive對象不僅可以處理首要類型,而且還能處理爲串行化而設計的CObject_派生類的對象。一個串行化類通常有一個Serialize成員函數並且使用DECLARE_SERIAL和IMPLEMENT_SERIAL宏。這些在CObject類中有所描述。
重載提取(>>)和插入(<<)是方便的歸檔編程接口。它支持主要類型和CObject派生類。
CArchive還支持使用MFC Windows套接字類CSocket和CSocketFile編程。IsBufferEmpty成員函數也支持這種使用。如果要了解有關CArchive的更多信息,請參閱聯機文檔“Visual C++ 程序員指南”中的“串行化(永久對象)” 和“Windows套接字:在歸檔文件中使用套接字”
上面是MSDN中的一段介紹。
下面舉個例子理解下:
建立個單文檔的MFC工程,這樣方便點。
下面是我自己的一個數據類
在MFC框架的Doc類中找到Serialize(CArchive& ar)函數
運行程序
當點擊菜單的保存按鈕後 就會將上面的信息保存進所選則的文件中
當點擊菜單的打開按鈕後 在裏面大斷點就可以看到數據已經加載進來了