Partager via


À l'aide de le CArchive << et des opérateurs d'>>

CArchive fournit les opérateurs << et >> pour lire et écrire les types de données simples ainsi que CObjects vers et à partir d'un fichier.

Pour inscrire un objet dans un fichier via une archive

  • L'exemple suivant indique comment stocker un objet dans un fichier via une archive :

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

Pour charger un objet d'une valeur précédemment enregistrée dans un fichier

  • Le code exemple suivant montre comment charger un objet d'une valeur précédemment enregistrée dans un fichier :

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

Généralement, vous enregistrez et charger des données vers et à partir d'un fichier via une archive dans des fonctions Serialize de classes dérivées CObject-, vous devez être déclarées avec la macro de DECLARE_SERIALIZE. Une référence à un objet CArchive est transmise à la fonction Serialize. Vous appelez la fonction IsLoading de l'objet CArchive pour déterminer si la fonction Serialize a été appelée pour charger des données de fichier ou de magasin au fichier.

La fonction Serialize d'une classe dérivée CObjectsérialisable - la classe dérivée est généralement sous la forme suivante :

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

Le modèle de code ci-dessus est exactement identique à un AppWizard création pour la fonction Serialize du document (une classe dérivés de CDocument). Ce modèle de code vous aide à écrire du code plus facile à vérifier, car le code enregistrement et le code de chargement doivent toujours être parallèles, comme dans l'exemple suivant :

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

La bibliothèque définit << et les opérateurs de >> pour CArchive comme premier opérande les types et classe de données suivantes en tant que second opérande :

CObject*

SIZE et CSize

float

WORD

CString

POINT et CPoint

DWORD

BYTE

RECT et CRect

Double

LONG

CTime et CTimeSpan

Int

COleCurrency

COleVariant

COleDateTime

COleDateTimeSpan

 

Notes

Le stockage et chargement de CObjects via une archive requiert une attention supplémentaire.Pour plus d'informations, consultez Stockage et de CObjects via une archive.

Les opérateurs de CArchive << et de >> retournent toujours une référence à l'objet CArchive, qui est le premier opérande. Cela vous permet de chaîner les opérateurs, comme illustré ci-après :

archive << m_strName << m_wAge;

Voir aussi

Concepts

sérialisation : sérialiser un objet