4.5 Lectura de archivos

Luego de escribir los datos en un archivo, es muy posible que los querramos leer desde el mismo ú otro programa. Para ello, se sigue una estructura bastante similar a la de la escritura. El siguiente programa lee los números primos que se generaron en la sección anterior.

#include <iostream>
#include <fstream>   //Necesario para manejar archivos 

using namespace std;

int main()
{
    int n[50000],i=0,j;
    char pc;
    ifstream ArchEntrada ("primos.csv",ios::in); //Defino un archivo de entrada
    while (!ArchEntrada.eof())
    {
    ArchEntrada>>n[i]>>pc ;   //Leo un entero y el ; que le sigue
    i++;

    }
    ArchEntrada.close();  // Cierro el archivo una vez que terminé de leer
   

    for(j=0;j<100;j++)
        cout<<n[j]<<" ";
    return 0;
}


En este programa, se define un objeto de tipo ifstream que será un archivo de entrada. Los parámetros que recibe son el nombre del archivo físico, y el modo en que se abrirá (ios::in).
Es necesario leer todos los datos del archivo hasta que se llegue al final del mismo. Para esto se usa la función ArchEntrada.eof(). La función eof() devuelve un valor booleano que es true si se llegó al final del archivo, y false si todavía no se alcanzó el final. Lo que hace el ciclo es: Mientras no se llegue al final del archivo, leer otro número. La instrucción de flujo de entrada >> lee un número y lo guarda en una posición del vector n. Además de los números el archivo tiene los ";" que se escribieron entre número y número. También es necesario leerlos, y guardarlos en la variable pc.
Una vez que se alcanzó el fin del archivo, la función eof() devuelve un valor true y finaliza el ciclo. Entonces se cierra el archivo con la función close(), y el programa puede seguir trabajando con los números cargados en el vector. (En este ejemplo, sólo se muestran los primeros 100 elementos del vector)

En estas dos secciones sólo hemos visto una forma de escribir y leer datos en archivos de texto. Esta forma es de las más simples y aún así es muy versátil (los archivos creados pueden ser por ejemplo, leídos desde una planilla de cálculo).
Otro uso muy común es tener información guardada en un archivo. Al comenzar el programa se define un objeto ifstream vinculado al archivo y a través del cual se ingresan los datos que pueden guardarse en un vector de estructuras. Luego se cierra el archivo, y se trabaja con el vector consultando y modificando la información. Cuando ya no se desea seguir trabajando, se crea un objeto ofstream vinculado al mismo archivo (es por ello que se debe cerrar el ifstream primero) y se graba en el mismo toda la información del vector, quedando actualizada y lista para ser utilizada nuevamente.

No hay comentarios:

Publicar un comentario