Sdílet prostřednictvím


Použití CArchive << a >> Operátory

CArchiveposkytuje << a >> operátory pro jednoduché datové typy pro čtení a zápis jako CObjects a ze souboru.

Uložit objekt v souboru prostřednictvím archiv

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

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

Načtení objektu z hodnoty dříve uložené do souboru

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

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

Obvykle uložit a načíst data ze souboru prostřednictvím v archivu a Serialize funkce CObject-odvozené třídy, které musí být deklarována s DECLARE_SERIALIZE makro.Odkaz na CArchive objekt je předán do vašeho Serialize funkce.Volání IsLoading funkce CArchive objekt určit, zda Serialize byla volána funkce načtení dat ze souboru nebo ukládat data do souboru.

Serialize Funkci serializovatelný CObject-odvozené třídy obvykle má následující tvar:

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ý kód šablony je přesně stejná jako jeden AppWizard vytvoří Serialize funkce dokumentu (Třída odvozená od CDocument).Tento kód šablony umožňuje napsat kód, který je snadněji kontrolovat, protože kód pro ukládání a načítání kódu by měla 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;
}

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

CObject*

VELIKOST a CSize

float

Word

CString

BOD aCPoint

DWORD

BYTE

RECT a CRect

Double

LONG

CTime a CTimeSpan

Int

COleCurrency

COleVariant

COleDateTime

COleDateTimeSpan

 

[!POZNÁMKA]

Ukládání a načítání CObjects prostřednictvím archiv vyžaduje zvláštní pozornost.Další informace naleznete v ukládání a načítání CObjects prostřednictvím archiv.

CArchive << a >> operátory vždy vrací odkaz na CArchive objektu, který je prvním operandem.To umožňuje zřetězení operátory, jak je ukázáno níže:

archive << m_strName << m_wAge;

Viz také

Koncepty

Serializace: Serializaci objektu