Работаем с проектом из прошлого шага.
У нас есть функция CPr1Doc::Serialize. Перепишем ее.
void CPr1Doc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
ar << m_string; // сохранение
}
else
{
ar >> m_string; // восстановление
}
}
Эта функция будет всегда вызываться при открытии или сохранении файла. То есть, если Вы выбираете пункты меню File - > Open -> Save -> Save As... всегда вызывается эта функция.
Для записи и чтения данных определены операторы << и >>. Эти операторы аналогичны потокам. Они определены как минимум для всех простых типов.
BYTE
WORD
int
LONG
DWORD
float
double
Кроме того, многие классы поддерживают данные операторы. Например, CString. Но для каждого класса надо смотреть отдельно. Если Вы используете свои классы и хотите производить подобные операции за один заход, то Вам придется перегрузить данные операции для Вашего класса. Следует отметить, что Serialize позволяет иметь только последовательный доступ. Для более тонкой работы Вы можете использовать класс CFile. Но мы пока на этом остановимся.
Итак, класс документа обеспечивает Вас функцией Serialize, с помощью который Вы можете сохранять и восстанавливать данные. Для использования этой возможности Ваши данные должны поддерживать операции << и >>.