Tabla de Contenidos

Archivos

Hasta ahora, siempre hemos leido mediante cin, y escrito mediante cout. Sin embargo, a veces es cómodo utilizar uno o más (todos los que queramos) archivos de texto de donde sacar los datos, y similarmente escribir a uno o más archivos los resultados de nuestro programa.

En C++, utilizar archivos es muy fácil, ya que la forma de hacerlo es prácticamente igual a lo que ya venimos haciendo con cin y cout.

Para utilizar archivos y hacer funcionar los ejemplos de esta sección, tendremos que incluir #include <fstream> en nuestros programas.

Archivos de entrada

Es posible crear una variable que represente un archivo de entrada, del cual el programa leerá datos. Estas variables se utilizan de exactamente igual manera que cin, y se declaran como en el siguiente programa de ejemplo:

#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream archivo1("nombre1.txt");
    ifstream archivo2("nombre2.in");
    int x,y,z;
    archivo1 >> x>> y >> z;
    string a; int b;
    archivo2 >> a >> b;
    return 0;
}

En el ejemplo se ve que podemos leer datos contenidos en los archivos exactamente igual que hacíamos con cin, pero indicando la variable del archivo correspondiente. En lugar de tener que ser tipeados por el usuario, el programa recibe los datos contenidos en los archivos correspondientes. Las variables son de tipo ifstream (Del inglés, “Input File Stream”), y al declararlas se indica entre paréntesis el nombre del archivo del cuál se leerá utilizando esa variable. Dicho archivo debe existir y contener los datos deseados, al momento de ejecutar el programa.

En este ejemplo se usan dos archivos distintos: El contenido de “nombre1.txt” se guarda en x,y,z (que tendrán 3 enteros) y el de “nombre2.in” se guarda en a,b (Un string y un entero).

Archivos de salida

Los archivos de salida se pueden utilizar de manera completamente análoga a los de entrada, pero operando como si fueran cout, y su tipo será ofstream (Del inglés “Output File Stream”).

#include <fstream>
 
using namespace std;
 
int main()
{
    ofstream archivo1("nombre1.txt");
    ofstream archivo2("nombre2.out");
    int x = 32,y = 10;
    archivo1 << x << " " << y << " " << -33 << endl;
    string a = "pepe"; int b = 100;
    archivo2 << a << endl << b << endl;
    return 0;
}

Luego de ejecutar este programa, “nombre1.txt” contendrá lo siguiente:

32 10 -33

y “nombre2.out” contendrá lo siguiente:

pepe
100

Ejemplos de aplicación

Los problemas de la Olimpíada Informática Argentina anteriores al 2014 utilizaban entrada y salida mediante archivos. Se puede practicar utilizar archivos de entrada y salida por ejemplo con este problema o con este otro.