Compartir a través de


Mediante el CArchive < < y > > operadores

CArchive proporciona los operadores de << y de >> para escribir y leer tipos de datos simples así como s para CObjecten un archivo.

Para almacenar un objeto en un archivo con un archivo

  • El ejemplo siguiente muestra cómo almacenar un objeto en un archivo con un archivo:

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

Para cargar un objeto de un valor almacenado previamente en un archivo

  • El ejemplo siguiente muestra cómo cargar un objeto de un valor almacenado previamente en un archivo:

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

Normalmente, se almacena y carga datos en un archivo con un archivo en las funciones de CObject- clases derivadas de Serialize , que debe tener declarado con la macro de DECLARE_SERIALIZE .Una referencia a un objeto de CArchive se pasa a la función de Serialize .Se llama a la función de IsLoading del objeto de CArchive para determinar si la función de Serialize se ha denominado para cargar datos de archivo o de almacén al archivo.

La función de Serialize de CObjectserializable (la clase derivada tiene normalmente el formato siguiente:

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

La plantilla anterior de código es exactamente igual que el AppWizard crea para la función de Serialize de documentos (una clase derivada de CDocument).Ayuda de esta plantilla de código escribe código que es más fácil de ver, porque el código que almacena y el código de carga siempre deben ser paralelos, como en el ejemplo siguiente:

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 biblioteca define << y operadores de >> para CArchive como el primer operando y los tipos de datos y los tipos de clase siguientes como el segundo operando:

CObject*

CALIBRE y CSize

float

WORD

CString

POINT y CPoint

DWORD

BYTE

RECT y CRect

Double

LONG

CTime y CTimeSpan

Int

COleCurrency

COleVariant

COleDateTime

COleDateTimeSpan

 

[!NOTA]

Almacenar y cargar s para CObjectmediante un archivo requiere la consideración adicional.Para obtener más información, vea Almacenar y cargando CObjects mediante un archivo.

Los operadores de CArchive << y de >> siempre devuelven una referencia al objeto de CArchive , que es el primer operando.Esto permite encadenar los operadores, como se muestra a continuación:

archive << m_strName << m_wAge;

Vea también

Conceptos

Serialización: Serialización de un objeto