The CArchive class allows you to save a complex network of objects in a permanent binary form (usually disk storage) that “persists” after those objects are deleted. Later you can load the objects from persistent storage, “reconstituting” them in memory. This process of making data persistent is called “serialization.”
You can think of an archive object as a kind of binary stream. Like an input/output stream, an archive is associated with a file and permits the buffered writing and reading of data to and from storage. An input/output stream processes sequences of ASCII characters, but an archive processes binary object data in an efficient, nonredundant format.
When you construct a CArchive object, you attach it to an object of class CFile (or a derived class) that represents an open file. You also specify whether the archive will be used for loading or storing. A CArchive object can process not only primitive types but also objects of CObject-derived classes designed for serialization. A serializable class must have a Serialize member function, and it must use the DECLARE_SERIAL and IMPLEMENT_SERIAL macros, as described under class CObject.
The overloaded extraction (>>) and insertion (<<) operators are convenient archive programming interfaces that support both primitive types and CObject-derived classes.
#include <afx.h>
CFile, CObject
You must create a CFile object before you can create a CArchive object. In addition, you must ensure that the archive's load/store status is compatible with the file's open mode. You are limited to one active archive per file.