Compartilhar via


Usando o CArchive << e >> operadores

CArchiveFornece << e >> operadores para gravar e ler tipos de dados simples, bem sistema autônomo CObjectsistema autônomo e para um arquivo.

Para armazenar um objeto em um arquivar por meio de um arquivar

  • O exemplo a seguir mostra como armazenar um objeto em um arquivar por meio de um arquivar:

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

Para carregar um objeto de um valor anteriormente armazenado em um arquivo

  • O exemplo a seguir mostra como carregar um objeto de um valor anteriormente armazenado em um arquivo:

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

Em geral, armazenar e carregar dados de e para um arquivar por meio de um arquivar no Serialize funções do CObject-derivadas de classes, que você deve ter declarado com o DECLARE_SERIALIZE macro.Uma referência a um CArchive objeto é passado para o Serialize função. Chamar o IsLoading função dos CArchive objeto para determinar se o Serialize a função foi telefonar para carregar dados do arquivo ou armazenar os dados para o arquivo.

The Serialize função de um serializável CObject-classe derivada normalmente tem a seguinte forma:

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

O modelo de código acima é exatamente o mesmo sistema autônomo um que AppWizard cria para o Serialize função do documento (uma classe derivada de CDocument).Este modelo de código ajuda a escrever código que é mais fácil revisar, porque o código armazenamento e o código de carregamento devem sempre ser paralelos, sistema autônomo no exemplo a seguir:

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

A biblioteca define << and >> operadores para CArchive sistema autônomo o primeiro operando e sistema autônomo seguintes tipos de dados e tipos de classe sistema autônomo o segundo operando:

CObject*

dimensionar e CSize

float

PALAVRA

CString

PONTO and CPoint

DWORD

BYTE

RECT e CRect

Double

LONGO

CTime e CTimeSpan

Int

COleCurrency

COleVariant

COleDateTime

COleDateTimeSpan

 

Observação:

Armazenar e carregar CObjects por meio de um arquivar requer considerações extra. Para obter mais informações, consulte Armazenar e carregando CObjects por meio de um arquivar.

The CArchive << and >> operadores sempre retornar uma referência à CArchive objeto, que é o primeiro operando. Isso permite que você encadear sistema autônomo operadores, sistema autônomo mostrado abaixo:

archive << m_strName << m_wAge;

Consulte também

Conceitos

Serialização: Serializando um objeto