Visual C++. Описание стандартных классов - CArchive

ОГЛАВЛЕНИЕ


CArchive

Класс CArchive позволяет сохранять на диске достаточно сложные объекты, а также загружать их в память по мере необходимости. Хранение объектов производится в файлах с последовательным доступом. Данный тип файла можно представить себе как двоичный поток данных. Подобно потокам, используемым в операциях ввода-вывода, архив использует буферизированную запись и чтение данных в память и из памяти. Поток ввода-вывода обрабатывает последовательности символов ASCII, но архив обрабатывает двоичные данные объектов в более эффективном формате, не использующем избыточности. Прежде, чем использовать объект класса архива, необходимо создать соответствующий ему объект класса CFile. При этом необходимо удостовериться, что в этих объектах соответствуют атрибуты доступа к данным. Одному объекту класса CFile может соответствовать не более одного активного объекта класса CArchive. При создании объекта класса CArchive он присоединяется к объекту класса CFile (или производного от него класса), соответствующего открытому файлу. При этом следует также определить режим работы с архивом: будет ли он использоваться для загрузки или сохранения данных. Объект класса CArchive может работать не только с простейшими типами данных, но также и объектами классов, производных от класса CObject, позволяющих сохранять свои данные в последовательном формате. Класс, допускающий сохранение своих данных в последовательном формате, обычно имеет функцию Serialize, а при его описании и реализации используются макросы DECLARE_SERIAL и IMPLEMENT_SERIAL. Перегруженные операторы чтения данных из архива (>>) и записи данных в архив (<<) обеспечивают удобный программный интерфейс работы с архивом. Аргументом данных операторов могут быть как переменные простейших типов, так и объекты классов, производных от класса CObject. Описание данного класса содержится в файле заголовка afx.h.

operator >>

friend CArchive& operator >>(CArchive& ar, CObject *& pOb);
throw(CArchiveException, CFileException, CMemoryException);
friend CArchive& operator >>(CArchive& ar, const CObject *& pOb);
throw(CArchiveException, CFileException, CMemoryException);
CArchive& operator >>(BYTE& by);
throw(CArchiveException, CFileException);
CArchive& operator >>(WORD& w);
throw(CArchiveException, CFileException);
CArchive& operator >>(int& i);
throw(CArchiveException, CFileException);
CArchive& operator >>(LONG& l);
throw(CArchiveException, CFileException);
CArchive& operator >>(DWORD& dw);
throw(CArchiveException, CFileException);
CArchive& operator >>(float& f);
throw(CArchiveException, CFileException);
CArchive& operator >>(double& d);
throw(CArchiveException, CFileException);

Возвращаемое значение

Ссылка на объект класса CArchive, позволяющая использовать в одной строке программы несколько подобных операторов.

Описание

Читает указанный объект или переменную простейшего типа из архива. Если в файле реализации класса использовался макрос IMPLEMENT_SERIAL, то данный оператор вызывает защищенную функцию ReadObject с ненулевым указателем на объект класса, производного от класса CObject, который в свою очередь, вызывает функцию Serialize данного класса.

operator <<

friend CArchive& operator <<(CArchive& ar, const CObject* pOb);
throw(CArchiveException, CFileException);
CArchive& operator <<(BYTE by);
throw(CArchiveException, CFileException);
CArchive& operator <<(WORD w);
throw(CArchiveException, CFileException);
CArchive& operator <<(int i);
throw(CArchiveException, CFileException);
CArchive& operator <<(LONG l);
throw(CArchiveException, CFileException);
CArchive& operator <<(DWORD dw);
throw(CArchiveException, CFileException);
CArchive& operator <<(float f);
throw(CArchiveException, CFileException);
CArchive& operator <<(double d);
throw(CArchiveException, CFileException);

Возвращаемое значение

Ссылка на объект класса CArchive, позволяющая использовать в одной строке программы несколько подобных операторов.

Описание

Записывает указанный объект или переменную простейшего типа в архив. Если в файле реализации класса использовался макрос IMPLEMENT_SERIAL, то данный оператор вызывает защищенную функцию WriteObject с ненулевым указателем на объект класса, производного от класса CObject, который в свою очередь, вызывает функцию Serialize данного класса.