Condividi tramite


Uso di CArchive << and >> Operators

CArchive fornisce << operatori e >> per la scrittura e la lettura di tipi di dati semplici, nonché CObjectda e verso un file.

Per archiviare un oggetto in un file tramite un archivio

  1. L'esempio seguente illustra come archiviare un oggetto in un file tramite un archivio:

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

Per caricare un oggetto da un valore archiviato in precedenza in un file

  1. Nell'esempio seguente viene illustrato come caricare un oggetto da un valore archiviato in precedenza in un file:

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

In genere, si archiviano e caricano dati da e verso un file tramite un archivio nelle Serialize funzioni delle CObjectclassi derivate da , che è necessario aver dichiarato con la macro DECLARE_edizione Standard RIALIZE. Un riferimento a un CArchive oggetto viene passato alla Serialize funzione. Chiamare la IsLoading funzione dell'oggetto CArchive per determinare se la Serialize funzione è stata chiamata per caricare dati dal file o archiviare i dati nel file.

La Serialize funzione di una classe derivata da serializzabile CObjectha in genere il formato seguente:

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

Il modello di codice precedente è esattamente uguale a quello creato da AppWizard per la Serialize funzione del documento (una classe derivata da CDocument). Questo modello di codice consente di scrivere codice più semplice da esaminare, perché l'archiviazione del codice e il codice di caricamento devono essere sempre paralleli, come nell'esempio seguente:

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 libreria definisce << gli operatori e >> per CArchive come primo operando e i tipi di dati e i tipi di classe seguenti come secondo operando:

BYTE
CObject*
COleCurrency
COleDateTime
COleDateTimeSpan

COleVariant
CString
CTime e CTimeSpan
Double

DWORD
Float
Int
LONG

POINT e CPoint
RECT e CRect
SIZE e CSize
WORD

Nota

L'archiviazione e il caricamento CObjectdi tramite un archivio richiedono considerazioni aggiuntive. Per altre informazioni, vedere Archiviazione e caricamento di oggetti CObject tramite un archivio.

Gli CArchive<< operatori e >> restituiscono sempre un riferimento all'oggetto CArchive , ovvero il primo operando. In questo modo è possibile concatenare gli operatori, come illustrato di seguito:

archive << m_strName << m_wAge;

Vedi anche

Serializzazione: serializzazione di un oggetto