Funciones miembro de la secuencia de archivo de salida

Las funciones miembro del flujo de salida tienen tres tipos: los que son equivalentes a los manipuladores, los que realizan operaciones de escritura sin formato, y los que modifican de otra forma al estado de la secuencia y no tienen ningún operador equivalente de manipulador o inserción.Para la salida secuencial, con formato, es posible que solo utiliza operadores y los manipuladores de inserción.Para la salida binaria de acceso aleatorio de disco, utiliza otras funciones miembro, con o sin operadores de inserción.

La función open para secuencias de salida

Para utilizar una secuencia de archivo de salida (ofstream), debe asociar que transmitir con un archivo de disco específico en el constructor o la función de abierto .Si utiliza la función de abierto , puede reutilizar el mismo objeto de secuencia con una serie de archivos.En cualquier caso, los argumentos que describen el archivo son iguales.

Al abrir el archivo asociado a una secuencia de salida, especifique normalmente un indicador de open_mode .Puede combinar estos marcadores, que se definen como los enumeradores en la clase de ios , con el bit a bit OR ( | ) operador.Vea ios_base:: openmode para una lista de los enumeradores.

Tres escenarios comunes del flujo de salida implican opciones de modo:

  • crear un archivo.Si el archivo ya existe, se elimina la versión antigua.

    ostream ofile( "FILENAME" );  // Default is ios::out
    ofstream ofile( "FILENAME", ios::out ); // Equivalent to above
    
  • Anexando los registros a un archivo existente o crear uno si no existe.

    ofstream ofile( "FILENAME", ios::app );
    
  • Abra dos archivos, uno a la vez, en la misma secuencia.

    ofstream ofile();
    ofile.open( "FILE1", ios::in );
    // Do some output
    ofile.close(); // FILE1 closed
    ofile.open( "FILE2", ios::in );
    // Do some more output
    ofile.close(); // FILE2 closed
    // When ofile goes out of scope it is destroyed.
    

La función put

La función de título escribe un carácter en el flujo de salida.Las dos instrucciones siguientes son iguales de forma predeterminada, pero la segunda se ven afectadas por los argumentos del formato de la secuencia:

cout.put( 'A' ); // Exactly one character written
cout << 'A'; // Format arguments 'width' and 'fill' apply 

La función de escritura

La función de escritura escribe un bloque de memoria a una secuencia de archivo de salida.El argumento length especifica el número de bytes escritos.Este ejemplo crea un archivo de salida transmitir y escribe el valor binario de la estructura de Date :

// write_function.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;

struct Date
{
   int mo, da, yr;
};

int main( )
{
   Date dt = { 6, 10, 92 };
   ofstream tfile( "date.dat" , ios::binary );
   tfile.write( (char *) &dt, sizeof dt );
}

La función de escritura no detiene cuando alcanza un carácter null, por lo que se escribe la estructura de clase completa.la función toma dos argumentos: un puntero de char y un recuento de caracteres a escribir.Observe la conversión necesaria a char* antes de la dirección del objeto de la estructura.

Las funciones de seekp y de tellp

Una secuencia de archivo de salida mantiene un puntero interno que señale a la posición donde escribir los datos después.La función miembro de seekp establece este puntero y proporciona así la salida de acceso aleatorio de archivo de disco.La función miembro de tellp devuelve la posición del archivo.Para obtener ejemplos que utilizan los equivalentes del flujo de entrada a seekp y a tellp, vea Las funciones de seekg y de tellg.

La función close en las secuencias de salida

La función miembro de cierre cierra el archivo de disco asociado a una secuencia de archivo de salida.El archivo se debe cerrar para completar toda la salida del disco.En caso necesario, ofstream destructor cierra el archivo automáticamente, pero puede utilizar la función de cierre si necesita abrir otro archivo para el mismo objeto de secuencia.

El flujo de salida destructor automáticamente cierra el archivo de una secuencia solo si abrió el constructor o la función miembro de abierto el archivo.Si se pasa al constructor descriptor de archivo para un archivo de ya-Abrir o utiliza la función miembro de adjuntar , debe cerrar el archivo explícitamente.

Funciones de procesamiento del error

Utilice estas funciones miembro para comprobar los errores mientras escribe en una secuencia:

Función

Valor devuelto

erróneo

devuelve TRUE si hay un error irrecuperable.

error

Devuelve TRUE si hay un error irrecuperable o condición “esperada”, como un error de conversión, o si no se encuentra el archivo.el procesamiento puede reanudar a menudo después de una llamada a desactive con un argumento cero.

kind

Devuelve TRUE si no hay ninguna condición de error irrecuperable (u otro) y la marca de fin de archivo no está establecida.

EOF

devuelve TRUE en la condición de fin de archivo.

clear

Establece el estado del error interno.Si se llama con argumentos predeterminados, borra todos los bits del error.

rdstate

Devuelve el estado actual del error.

Sobrecarga el operador de ! para realizar la misma función que la función de error .así la expresión:

if( !cout)...

equivale a:

if( cout.fail() )...

Sobrecarga el operador de void* () para ser el contrario que el operador de ! ; así la expresión:

if( cout)...

es igual a:

if( !cout.fail() )...

El operador de void* () no es equivalente a kind porque no prueba para el final del archivo.

Vea también

Referencia

Secuencias de salida