次の方法で共有


ファイルとの間でのデータのシリアル化

永続化の基本的な考え方は、オブジェクトがメンバー変数の値によって示される現在の状態を永続ストレージに書き込める必要があるということです。 その後、永続的ストレージからオブジェクトの状態を読み取るか、"逆シリアル化" することで、オブジェクトを再作成できます。 ここで重要な点は、オブジェクト自体が独自の状態の読み取りと書き込みを担当することです。 したがって、クラスを永続的にするには、基本的なシリアル化操作を実装する必要があります。

フレームワークは、[ファイル] メニューの [保存] コマンドと [名前を付けて保存] コマンドに応答してドキュメントをディスク ファイルに保存し、[開く] コマンドに応答してディスク ファイルからドキュメントを読み込むための既定の実装を提供します。 ほとんど作業を行わないと、ファイルとの間でデータを書き込んで読み取るドキュメントの機能を実装できます。 必要な主な操作は、ドキュメント クラスの Serialize メンバー関数をオーバーライドすることです。

MFC アプリケーション ウィザードは、作成するドキュメント クラスにSerializeCDocumentメンバー関数のスケルトン オーバーライドを配置します。 アプリケーションのメンバー変数を実装したら、ファイルに接続された "アーカイブ オブジェクト" にデータを送信するコードで Serialize オーバーライドを入力できます。 CArchive オブジェクトは、C++ iostream ライブラリの cin および cout 入出力オブジェクトに似ています。 ただし、 CArchive は、書式設定されたテキストではなくバイナリ形式を書き込んで読み取ります。

詳しく知りたいこと

シリアル化におけるドキュメントの役割

フレームワークは、ドキュメントの Serialize メンバー関数が実装されている場合に呼び出すことによって、[ファイル] メニューの [開く]、[保存]、および [名前を付けて保存] コマンドに自動的に応答します。 たとえば、ID_FILE_OPEN コマンドは、アプリケーション オブジェクトのハンドラー関数を呼び出します。 このプロセス中、ユーザーは [ファイルを開く] ダイアログ ボックスを表示して応答し、フレームワークはユーザーが選択したファイル名を取得します。 フレームワークは、ドキュメントにデータを読み込むように設定された CArchive オブジェクトを作成し、アーカイブを Serializeに渡します。 フレームワークは既にファイルを開いています。 ドキュメントの Serialize メンバー関数のコードは、アーカイブを介してデータを読み取り、必要に応じてデータ オブジェクトを再構築します。 シリアル化の詳細については、シリアル化に関 する記事を参照してください。

シリアル化におけるデータの役割

一般に、クラス型データはそれ自体をシリアル化できる必要があります。 つまり、オブジェクトをアーカイブに渡すとき、オブジェクトはアーカイブに自身を書き込む方法と、アーカイブから自身を読み取る方法を認識している必要があります。 MFC では、この方法でクラスをシリアル化可能にするためのサポートが提供されています。 データ型を定義するクラスを設計し、その型のデータをシリアル化する場合は、シリアル化用に設計します。

こちらも参照ください

ドキュメントの使用