Sdílet prostřednictvím


Použití CArchive << a >> operátorů

CArchive poskytuje << a >> operátory pro zápis a čtení jednoduchých datových typů a CObjecttaké do a ze souboru.

Uložení objektu do souboru prostřednictvím archivu

  1. Následující příklad ukazuje, jak uložit objekt do souboru prostřednictvím archivu:

    CArchive ar(&theFile, CArchive::store);
    WORD wEmployeeID = 78;
    ar << wEmployeeID;
    

Načtení objektu z hodnoty, která byla dříve uložena v souboru

  1. Následující příklad ukazuje, jak načíst objekt z hodnoty dříve uložené v souboru:

    CArchive ar(&theFile, CArchive::load);
    WORD wEmployeeID;
    ar >> wEmployeeID;
    

Obvykle ukládáte a načítáte data do souboru prostřednictvím archivu Serialize ve funkcích -odvozených CObjecttříd, které musíte deklarovat pomocí DECLARE_SERIALIZE makra. Odkaz na CArchive objekt se předá vaší Serialize funkci. Zavoláte IsLoading funkci objektu CArchive , která určí, zda Serialize byla volána funkce pro načtení dat ze souboru nebo uložení dat do souboru.

Funkce Serialize serializovatelné CObject-odvozené třídy obvykle má následující formu:

void CSerializableObj::Serialize(CArchive &archive)
{
   // call base class function first
   // base class is CObject in this case
   CObject::Serialize(archive);

   // now do the stuff for our specific class
   if (archive.IsStoring())
   {
      // TODO:  add storing code here
   }
   else
   {
      // TODO:  add storing code here
   }
}

Výše uvedená šablona kódu je úplně stejná jako ta, která AppWizard vytvoří pro Serialize funkci dokumentu (třída odvozená od CDocument). Tato šablona kódu vám pomůže psát kód, který se snadněji kontroluje, protože ukládání kódu a načítání kódu by mělo být vždy paralelní, jako v následujícím příkladu:

void CEmployee::Serialize(CArchive &archive)
{
   // call base class function first
   // base class is CObject in this case
   CObject::Serialize(archive);

   // now do the stuff for our specific class
   if (archive.IsStoring())
      archive << m_strName << m_wAge;
   else
      archive >> m_strName >> m_wAge;
}

Knihovna definuje a >> operátory << pro CArchive první operand a následující datové typy a typy tříd jako druhý operand:

BYTE
CObject*
COleCurrency
COleDateTime
COleDateTimeSpan

COleVariant
CString
CTime a CTimeSpan
Double

DWORD
Float
Int
LONG

POINT a CPoint
RECT a CRect
SIZE a CSize
WORD

Poznámka

Ukládání a načítání CObjectpřes archiv vyžaduje další důležité informace. Další informace naleznete v tématu Ukládání a načítání objektů CObject prostřednictvím archivu.

Operátory CArchive<< a >> operátory vždy vrací odkaz na CArchive objekt, což je první operand. To vám umožní zřetězovat operátory, jak je znázorněno níže:

archive << m_strName << m_wAge;

Viz také

Serializace: Serializace objektu