Partilhar via


Usando o CArchive << e >> Operadores

CArchiveFornece << e >> operadores para gravação e leitura de tipos de dados simples, bem como CObjects e para um arquivo.

Para armazenar um objeto em um arquivo por meio de um arquivamento

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

    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;
    

Normalmente, você pode armazenar e carregar dados de um arquivo através de um sistema de arquivamento e o Serialize funções de CObject-derivadas de classes, 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 do CArchive objeto para determinar se o Serialize a função foi chamada para carregar dados do arquivo ou armazenar dados no arquivo.

O Serialize a função de um serializável CObject-derivado classe 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 como um 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 de analisar, porque o armazenar código e o código de carregamento devem sempre ser paralelos, como 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;
}

Define a biblioteca << e >> operadores para CArchive como o primeiro operando e os seguintes tipos de dados e tipos de classe como o segundo operando:

CObject*

TAMANHO e CSize

float

PALAVRA

CString

PONTO eCPoint

DWORD

BYTE

RECT e CRect

Double

LONGO

CTime e CTimeSpan

Int

COleCurrency

COleVariant

COleDateTime

COleDateTimeSpan

 

ObservaçãoObservação

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

O CArchive << e >> operadores sempre retornam uma referência a CArchive objeto, que é o primeiro operando.Isso permite que você encadear os operadores, como ilustrado abaixo:

archive << m_strName << m_wAge;

Consulte também

Conceitos

Serialização: Serializar um objeto