Cómo leer y escribir en un archivo en C ++

How Read Write File C



En este artículo, le mostraremos cómo leer y escribir en un archivo en el lenguaje de programación C ++ usando varios ejemplos. Para comprender las operaciones de archivos de C ++ como lectura y escritura, primero debemos comprender el concepto de una secuencia en C ++.

¿Qué es un Stream?

Una corriente es simplemente un flujo de datos o caracteres. Hay dos tipos de flujos: flujos de entrada y flujos de salida. Un flujo de entrada se usa para leer los datos de un dispositivo de entrada externo, como un teclado, mientras que un flujo de salida se usa para escribir datos en el dispositivo de salida externo, como un monitor. Un archivo puede considerarse como fuente de entrada y salida.









En C ++, usamos una secuencia para enviar o recibir datos hacia o desde una fuente externa.



Podemos usar clases integradas para acceder a un flujo de entrada / salida, es decir, ios.





Aquí está la jerarquía de clases de flujo del lenguaje de programación C ++:



Los objetos cin y cout se utilizan para leer los datos del teclado y mostrar la salida en el monitor, respectivamente. Además, ifstream, que significa flujo de archivo de entrada, se usa para leer un flujo de datos de un archivo, y ofstream, que significa flujo de archivo de salida, se usa para escribir un flujo de datos en un archivo.

El archivo iostram.h contiene todas las clases de flujo de entrada / salida estándar requeridas en el lenguaje de programación C ++.

Ejemplos de

Ahora que comprende los conceptos básicos de las transmisiones, analizaremos los siguientes ejemplos para ayudarlo a comprender mejor las operaciones de archivos en C ++:

  • Ejemplo 1: abrir y cerrar un archivo
  • Ejemplo 2: escribir en un archivo
  • Ejemplo 3: leer de un archivo
  • Ejemplo 4: leer y escribir en un archivo
  • Ejemplo 5: leer y escribir en un archivo binario

Ejemplo 1: abrir y cerrar un archivo

En este programa de ejemplo, demostraremos cómo abrir / crear un archivo y cómo cerrar el archivo en C ++. Como puede ver en el programa a continuación, hemos incluido la biblioteca necesaria para las operaciones de archivos.

Para abrir y cerrar un archivo, necesitamos un objeto ofstream. Luego, para leer o escribir en un archivo, tenemos que abrir el archivo. Hemos incluido el archivo de encabezado fstream en la línea número 1 para que podamos acceder a la clase de flujo.

Hemos declarado myFile_Handler como un objeto de ofstream dentro de la función principal. Luego podemos usar la función open () para crear un archivo vacío y la función close () para cerrar el archivo.

#incluir

utilizando espacio de nombreshoras;

En tprincipal()
{
ofstream myFile_Handler;

// Archivo abierto
myFile_Handler.abierto('Archivo_1.txt');

// Cerrar archivo
myFile_Handler.cerrar();
regreso 0;
}

Ahora, compilaremos el programa y examinaremos el resultado. Como puede ver en la ventana de salida a continuación, el archivo File_1.txt se creó después de ejecutar el programa. El tamaño del archivo es cero ya que no hemos escrito ningún contenido en el archivo.

Ejemplo 2: escribir en un archivo

En el programa de ejemplo anterior, le mostramos cómo abrir un archivo y cómo cerrarlo. Ahora, le mostraremos cómo escribir algo en un archivo.

Podemos escribir en un archivo usando el operador de inserción de flujo, es decir,<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.

#incluir

utilizando espacio de nombreshoras;

En tprincipal()
{
ofstream myFile_Handler;
// Archivo abierto
myFile_Handler.abierto('Archivo_1.txt');

// Escribe en el archivo
myFile_Handler<< Este es un archivo de prueba de muestra. ' <<endl;
myFile_Handler<< 'Esta es la segunda línea del archivo. ' <<endl;

// Cerrar archivo
myFile_Handler.cerrar();
regreso 0;
}

Ahora, compilaremos el programa anterior y lo ejecutaremos. Como puede ver a continuación, hemos escrito correctamente en el archivo File_1.txt.

Ejemplo 3: leer de un archivo

En los ejemplos anteriores, le mostramos cómo escribir contenido en un archivo. Ahora, leamos el contenido del archivo que creamos en el Ejemplo 2 y visualicemos el contenido en el dispositivo de salida estándar, es decir, el monitor.

Usamos la función getline () para leer la línea completa del archivo y luego cout para imprimir la línea en el monitor.

#incluir
#incluir
#incluir

utilizando espacio de nombreshoras;

En tprincipal()
{
ifstream myFile_Handler;
cadena myLine;

// Archivo abierto en modo lectura
myFile_Handler.abierto('Archivo_1.txt');

si(myFile_Handler.Esta abierto())
{
// Sigue leyendo el archivo
tiempo(obtener línea(myFile_Handler, myLine))
{
// imprime la línea en la salida estándar
costo <<mi linea<<endl;
}
// Cerrar archivo
myFile_Handler.cerrar();
}
demás
{
costo << '¡No se puede abrir el archivo!';
}
regreso 0;
}

Ahora, imprimiremos el contenido de File_1.txt usando el siguiente comando: cat File_1.txt. Una vez que compilamos y ejecutamos el programa, queda claro que la salida coincide con el contenido del archivo. Por lo tanto, hemos leído correctamente el archivo e impreso el contenido del archivo en el monitor.

Ejemplo 4: leer y escribir en un archivo

Hasta ahora, le hemos mostrado cómo abrir, leer, escribir y cerrar un archivo. En C ++, también podemos leer y escribir en un archivo al mismo tiempo. Para leer y escribir en un archivo, tenemos que obtener un objeto fstream y abrir el archivo en modo ios :: in y ios :: out.

En este ejemplo, primero escribimos algo de contenido en el archivo. Luego, leemos los datos del archivo y los imprimimos en el monitor.

#incluir
#incluir
#incluir

utilizando espacio de nombreshoras;

En tprincipal()
{
fstream myFile_Handler;
cadena myLine;

// Archivo abierto
myFile_Handler.abierto('Archivo_1.txt', ios::en |ios::fuera);

// Comprueba si el archivo se ha abierto
si(!myFile_Handler)
{
costo << '¡El archivo no se abrió!';
Salida(1);
}

// Escribe en el archivo
myFile_Handler<< «1. Este es otro archivo de prueba de muestra. ' <<endl;
myFile_Handler<< «2. Esta es la segunda línea del archivo. ' <<endl;

myFile_Handler.buscar(ios::mendigar);

// Leer el archivo
si(myFile_Handler.Esta abierto())
{
// Sigue leyendo el archivo
tiempo(obtener línea(myFile_Handler, myLine))
{
// imprime la línea en la salida estándar
costo <<mi linea<<endl;
}

// Cerrar archivo
myFile_Handler.cerrar();
}
demás
{
costo << '¡No se puede abrir el archivo!';
}
myFile_Handler.cerrar();
regreso 0;
}

Ahora, compilaremos y ejecutaremos el programa.

Ejemplo 5: leer y escribir en un archivo binario

En este ejemplo, declararemos una clase y luego escribiremos el objeto en un archivo binario. Para simplificar este ejemplo, hemos declarado la clase Empleado con una variable pública emp_id. Luego, leeremos el archivo binario e imprimiremos la salida al monitor.

#incluir
#incluir

utilizando espacio de nombreshoras;

claseEmpleado
{
público:
En temp_id;
};

En tprincipal()
{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;

Empleado empObj_W, empObj_R;

// Archivo abierto
binOutFile_Handler.abierto('employee.dat', ios::fuera |ios::binario);

// Comprueba si el archivo se ha abierto
si(!binOutFile_Handler)
{
costo << '¡El archivo no se abrió!';
Salida(1);
}

// Inicializar empObj_W
empObj_W.emp_id = 1512;

// Escribe en el archivo
binOutFile_Handler.escribir((carbonizarse *) &empObj_W,tamaño de(Empleado));
binOutFile_Handler.cerrar();

si(!binOutFile_Handler.bien())
{
costo << '¡Se produjo un error al escribir el archivo binario!' <<endl;
Salida(2);
}

// Ahora, leamos el archivo employee.dat
binInFile_Handler.abierto('employee.dat', ios::en |ios::binario);
// Comprueba si el archivo se ha abierto
si(!binInFile_Handler)
{
costo << '¡El archivo no se abrió!';
Salida(3);
}

// Leer el contenido del archivo binario
binInFile_Handler.leer((carbonizarse *) &empObj_R,tamaño de(Empleado));
binInFile_Handler.cerrar();

si(!binInFile_Handler.bien())
{
costo << '¡Se produjo un error durante la lectura del archivo binario!' <<endl;
Salida(4);
}

// Imprime la salida de empObj_R
costo << 'Detalles del empleado:' <<endl;
costo << 'ID de empleado : ' <<empObj_R.emp_id <<endl;

regreso 0;
}

Conclusión

Los archivos se utilizan principalmente para almacenar los datos y juegan un papel importante en la programación del mundo real. En este artículo, le mostramos cómo usar varias operaciones de archivo con el lenguaje de programación C ++ trabajando con varios ejemplos. Además, le mostramos cómo leer y escribir datos tanto en archivos de texto como en archivos binarios.