Udostępnij za pośrednictwem


Używanie operatorów << and >> obiektu CArchive

CArchivezawiera << i >> podmioty gospodarcze do zapisywania i odczytywania proste typy danych jak również CObjects do i z pliku.

Próba zapisania obiektu w pliku przez archiwum

  • Poniższy przykład pokazuje jak przechowywać obiektu w pliku przez archiwum:

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

Aby załadować obiektu z wartości uprzednio zapisane w pliku

  • Poniższy przykład pokazuje jak załadować obiektu z wartości uprzednio zapisane w pliku:

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

Zwykle, zapisywanie i ładowanie danych do i z pliku przez archiwum w Serialize funkcje CObject-klasy, które muszą być zadeklarowane z pochodne DECLARE_SERIALIZE makro.Odwołanie do CArchive obiekt jest przekazywany do sieci Serialize funkcji.Wywołania IsLoading funkcja CArchive obiekt, aby określić, czy Serialize została wywołana funkcja ładowania danych z pliku lub przechowywać dane w pliku.

Serialize Do serializacji funkcji CObject-Klasa pochodna zazwyczaj ma następującą postać:

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
   }
}

Powyższy kod szablonu jest dokładnie taka sama jak jedna AppWizard tworzy dla Serialize funkcji dokumentu (Klasa pochodna od CDocument).Ten szablon kodu pomoże Ci napisanie kodu, który jest łatwiejsze do przeglądania, ponieważ przechowuje kod i kod ładujący zawsze powinny być równoległe, jak w następującym przykładzie:

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

Definiuje biblioteki << i >> operatorów dla CArchive jako pierwszy argument następujące typy danych i typy klas jako drugi argument:

CObject*

ROZMIAR i CSize

typ float

WORD

CString

PUNKT iCPoint

DWORD

BAJT

RECT i CRect

Wartość dwubajtowa

DŁUGI

CTime i CTimeSpan

Int

COleCurrency

COleVariant

COleDateTime

COleDateTimeSpan

 

[!UWAGA]

Przechowywanie i ładowanie CObjects za pośrednictwem archiwum wymaga dodatkowych rozważań.Aby uzyskać więcej informacji, zobacz przechowywanie i ładowanie CObjects za pośrednictwem archiwum.

CArchive<< i >> podmioty gospodarcze zawsze zwraca odwołanie do CArchive obiekt, który jest pierwszym argumentem.Umożliwia to łańcuch podmioty gospodarcze, jak zostało to przedstawione poniżej:

archive << m_strName << m_wAge;

Zobacz też

Koncepcje

Serializacja: serializacja obiektu