Sdílet prostřednictvím


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

CArchiveposkytuje << a >> operátory pro zapisování a čtení jednoduchých datových typů a také CObjects do a ze souboru.

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

  • 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;
    

Chcete-li načíst objekt z hodnoty v souboru dříve uložena

  • 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, ukládání a načítání dat do a ze souboru prostřednictvím archivu v Serialize funkce CObject-odvozené třídy, které musí být prohlášeny za s DECLARE_SERIALIZE makro.Odkaz na CArchive objekt je předán do Serialize funkce.Volání IsLoading funkce CArchive objekt, který chcete určit, zda Serialize funkce byla volána k načtení dat ze souboru nebo uložit data do souboru.

Serialize Funkce 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 AppWizard vytvoří Serialize funkce dokumentu (třída odvozená z CDocument).Tento kód šablony umožňuje napsat kód, který je snáze kontrolovatelné, protože ukládání a načítání kód by měl 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;
}

Určuje knihovnu << 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

DLOUHÝ

CTime a CTimeSpan

Int

COleCurrency

COleVariant

COleDateTime

COleDateTimeSpan

 

[!POZNÁMKA]

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

CArchive<< a >> subjekty vždy vrací odkaz CArchive objekt, který je první operand.To umožňuje zřetězení operátorů, jak je ukázáno níže:

archive << m_strName << m_wAge;

Viz také

Koncepty

Serializace: Serializace objektu