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;