Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Archivos y flujos de C++

Hasta ahora, hemos estado usando iostream biblioteca estándar, que proporciona cin y cout métodos para leer de entrada estándar y escribir en salida estándar respectivamente.

Este tutorial le enseñará cómo leer y escribir desde un archivo. Esto requiere otra biblioteca C++ estándar llamada fstream , que define tres nuevos tipos de datos −

Sr.No Tipo de datos y descripción
1

del flujo

Este tipo de datos representa el flujo de archivos de salida y se utiliza para crear archivos y escribir información en los archivos.

2

ifstream

Este tipo de datos representa el flujo del archivo de entrada y se usa para leer información de los archivos.

3

fstream

Este tipo de datos representa el flujo de archivos en general y tiene las capacidades de ofstream e ifstream, lo que significa que puede crear archivos, escribir información en archivos y leer información de archivos.

Para realizar el procesamiento de archivos en C++, los archivos de encabezado y deben incluirse en su archivo fuente de C++.

Abrir un archivo

Un archivo debe estar abierto antes de poder leer o escribir en él. Cualquiera del flujo o fstream El objeto se puede usar para abrir un archivo para escribir. Y el objeto ifstream se usa para abrir un archivo solo con fines de lectura.

La siguiente es la sintaxis estándar para la función open(), que es miembro de los objetos fstream, ifstream y ofstream.

void open(const char *filename, ios::openmode mode);

Aquí, el primer argumento especifica el nombre y la ubicación del archivo que se abrirá y el segundo argumento de open() La función miembro define el modo en que se debe abrir el archivo.

Sr.No Indicador de modo y descripción
1

ios::aplicación

Modo de agregar. Toda la salida a ese archivo se agregará al final.

2

ios::ate

Abra un archivo para salida y mueva el control de lectura/escritura al final del archivo.

3

ios::en

Abre un archivo para leer.

4

ios::fuera

Abre un archivo para escribir.

5

ios::trunc

Si el archivo ya existe, su contenido se truncará antes de abrir el archivo.

Puede combinar dos o más de estos valores O ing ellos juntos. Por ejemplo, si desea abrir un archivo en modo de escritura y desea truncarlo en caso de que ya exista, la siguiente será la sintaxis −

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

De manera similar, puede abrir un archivo para fines de lectura y escritura de la siguiente manera −

fstream  afile;
afile.open("file.dat", ios::out | ios::in );

Cerrar un archivo

Cuando un programa de C++ finaliza, vacía automáticamente todos los flujos, libera toda la memoria asignada y cierra todos los archivos abiertos. Pero siempre es una buena práctica que un programador cierre todos los archivos abiertos antes de finalizar el programa.

La siguiente es la sintaxis estándar para la función close(), que es miembro de los objetos fstream, ifstream y ofstream.

void close();

Escribir en un archivo

Mientras programa en C++, escribe información en un archivo desde su programa usando el operador de inserción de flujo (<<) tal como usa ese operador para mostrar información en la pantalla. La única diferencia es que usas un ofstream o fstream objeto en lugar del cout objeto.

Lectura de un archivo

Usted lee la información de un archivo en su programa usando el operador de extracción de flujo (>>) tal como usa ese operador para ingresar información desde el teclado. La única diferencia es que usas un ifstream o fstream objeto en lugar del cin objeto.

Ejemplo de lectura y escritura

A continuación se muestra el programa C++ que abre un archivo en modo de lectura y escritura. Después de escribir la información ingresada por el usuario en un archivo llamado afile.dat, el programa lee la información del archivo y la muestra en la pantalla −

Demostración en vivo
#include <fstream>
#include <iostream>
using namespace std;
 
int main () {
   char data[100];

   // open a file in write mode.
   ofstream outfile;
   outfile.open("afile.dat");

   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);

   // write inputted data into the file.
   outfile << data << endl;

   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // again write inputted data into the file.
   outfile << data << endl;

   // close the opened file.
   outfile.close();

   // open a file in read mode.
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 

   // write the data at the screen.
   cout << data << endl;
   
   // again read the data from the file and display it.
   infile >> data; 
   cout << data << endl; 

   // close the opened file.
   infile.close();

   return 0;
}

Cuando el código anterior se compila y ejecuta, produce la siguiente entrada y salida de muestra:

$./a.out
Writing to the file
Enter your name: Zara
Enter your age: 9
Reading from the file
Zara
9

Los ejemplos anteriores hacen uso de funciones adicionales del objeto cin, como la función getline() para leer la línea desde el exterior y la función ignore() para ignorar los caracteres adicionales dejados por la declaración de lectura anterior.

Puntero de posición de archivo

Ambos istream y ostream proporcionar funciones miembro para reposicionar el puntero de posición de archivo. Estas funciones miembro son seekg ("buscar obtener") para istream y seekp ("buscar poner") para ostream.

El argumento para seekg y seekp normalmente es un número entero largo. Se puede especificar un segundo argumento para indicar la dirección de búsqueda. La dirección de búsqueda puede ser ios::beg (el valor predeterminado) para el posicionamiento en relación con el comienzo de una secuencia, ios::cur para el posicionamiento en relación con la posición actual en una transmisión o ios::end para el posicionamiento en relación con el final de una transmisión.

El puntero de posición de archivo es un valor entero que especifica la ubicación en el archivo como un número de bytes desde la ubicación inicial del archivo. Algunos ejemplos de posicionamiento del puntero de posición de archivo "obtener" son −

// position to the nth byte of fileObject (assumes ios::beg)
fileObject.seekg( n );

// position n bytes forward in fileObject
fileObject.seekg( n, ios::cur );

// position n bytes back from end of fileObject
fileObject.seekg( n, ios::end );

// position at end of fileObject
fileObject.seekg( 0, ios::end );

Lenguaje C

  1. Variables, literales y constantes de C++
  2. Clases y objetos de C++
  3. Gestión de memoria C++:nuevo y eliminar
  4. Función amiga de C++ y Clases amigas
  5. Manejo de archivos C
  6. Administración de archivos y directorios de Python
  7. Estructuras y clases en C ++
  8. C - Archivos de encabezado
  9. C++ Fecha y hora
  10. Sobrecarga de C++ (operador y función)
  11. ¿Qué es un archivo Mill?