Udostępnij za pośrednictwem


Za pomocą CArchive << i >> Operatory

CArchivezawiera << i >> podmioty gospodarcze do zapisywania i odczytywania proste typy danych oraz CObjects do i z pliku.

Do przechowywania obiektów w pliku archiwum za pośrednictwem

  • Poniższy przykład przedstawia sposób przechowywania obiektu w pliku archiwum za pośrednictwem:

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

Aby załadować obiektu z wartość wcześniej przechowywane w pliku

  • Jak załadować obiektu z wartości uprzednio są przechowywane w pliku można znaleźć w poniższym przykładzie:

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

Zazwyczaj, przechowywanie i ładowanie danych do i z pliku archiwum w za pośrednictwem Serialize funkcje CObject-klasy, które musi być zadeklarowana z pochodne DECLARE_SERIALIZE makro.Odwołanie do CArchive obiektu jest przekazywana do programu Serialize funkcji.Wywołania IsLoading funkcji CArchive obiekt, aby ustalić, czy Serialize została wywołana funkcja ładowania danych z pliku lub przechowywania danych w pliku.

Serialize Funkcji możliwy do serializacji CObject-klasy pochodnej ma zazwyczaj 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ższe szablon kodu jest dokładnie taka sama, jako jeden AppWizard tworzy dla Serialize funkcji dokumentu (Klasa pochodna od CDocument).Ten szablon kodu ułatwia pisanie kodu, które ułatwia przeglądanie, ponieważ przechowywanie kodu i kodu załadunku zawsze powinny być równoległe, jak w poniższym 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 >> operatory CArchive jako pierwszy argument i typy klas jako drugi operand następujące typy danych:

CObject*

ROZMIAR i CSize

Pływak

PROGRAM WORD

CString

PUNKT iCPoint

DWORD

BAJT

RECTiCRect

Podwójne

DŁUGIE

CTimeiCTimeSpan

Int

COleCurrency

COleVariant

COleDateTime

COleDateTimeSpan

 

[!UWAGA]

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

CArchive << i >> podmioty gospodarcze zawsze zwraca odwołanie do CArchive obiekt, który jest pierwszym argumentem.Umożliwia to łańcucha podmiotów gospodarczych, jak pokazano poniżej:

archive << m_strName << m_wAge;

Zobacz też

Koncepcje

Szeregowanie: Szeregowania obiektu