共用方式為


MFC 中的序列化

本文說明 Microsoft Foundation Class Library (MFC) 中提供的序列化機制,以允許物件在程式執行之間保存。

序列化是寫入或讀取物件至永續性儲存媒體的程式,例如磁片檔案。 序列化非常適合在程式執行期間或之後維護結構化資料的狀態(例如 C++ 類別或結構)。 使用 MFC 所提供的序列化物件,可讓這以標準和一致的方式發生,讓使用者不必手動執行檔案作業。

MFC 提供 類別中 CObject 序列化的內建支援。 因此,衍生自 CObject 的所有類別都可以利用 CObject 的序列化通訊協定。

序列化的基本概念是,物件應該能夠寫入其目前狀態,通常是由其成員變數的值來寫入永續性儲存體。 之後,您可以藉由讀取或還原序列化儲存區中的物件狀態,來重新建立物件。 序列化會處理物件指標的所有詳細資料,以及序列化物件時所使用的物件迴圈參考。 重點是物件本身負責讀取和寫入自己的狀態。 因此,若要讓類別可序列化,它必須實作基本的序列化作業。 如發行項序列化群組所示,輕鬆地將這項功能新增至類別。

MFC 會使用 類別的物件 CArchive 做為要序列化的物件和儲存媒體之間的媒介。 這個物件一律與 CFile 物件相關聯,它會從中取得序列化的必要資訊,包括檔案名,以及要求的作業是否為讀取或寫入。 執行序列化作業的物件可以使用 物件, CArchive 而不考慮儲存媒體的性質。

CArchive物件會使用多載插入 ( << ) 和擷取 ( >> ) 運算子來執行寫入和讀取作業。 如需詳細資訊,請參閱 序列化:序列化:序列化物件一文中的透過封存 儲存和載入 CObjects。

注意

請勿將類別與一般用途 iostream 類別混淆 CArchive ,這些類別僅適用于格式化文字。 類別 CArchive 適用于二進位格式序列化物件。

如果您想要,您可以略過 MFC 序列化,以建立自己的持續性資料儲存機制。 您必須覆寫在使用者命令起始序列化的類別成員函式。 請參閱ID_FILE_OPEN、ID_FILE_SAVE和ID_FILE_SAVE_AS標準命令技術附注 22 中的 討論。

下列文章涵蓋序列化所需的兩個主要工作:

序列化:序列化與資料庫輸入/輸出一文 描述序列化是資料庫應用程式中的適當輸入/輸出 技術。

另請參閱

概念
一般 MFC 主題
CArchive 類別
CObject 類別
CDocument 類別
CFile 類別