MANEJO DE ARCHIVOS
Archivos
de texto.
El siguiente ejemplo muestra como se programa el manejo de archivos de texto en C++. El programa escribe líneas de máximo 80 caracteres en un archivo llamado DATOS.TXT, el cual queda ubicado en el mismo directorio donde se tenga guardado el programa.
#include
<cstdlib>
#include
<iostream>
#include
<fstream>
/* Programa que permite crear un archivo de datos de tipo texto.
El programa verifica que el archivo se pueda crear en el directorio de trabajo
Implementado por:
Edgar Romero R., Ing. de Sistemas
*/
using
namespace std;
int main(int argc, char *argv[])
{
int con = 0; // Se usa para contar cuantos registros incluimos en el archivo
bool seguir;
char nombre[80]; // Se usa para ller los datos a incluir en el archivo
// Abre un archivo en el modo de escritura
ofstream salida("datos.txt"); // Verifica la posibilidad error al abrir el archivo de escritura
if(!salida) //Se verifica que el archive se haya podido crear
{
cout << "\nNo puede abrir el archivo datos.txt\n";
return EXIT_SUCCESS;
}
// lee datos digitados desde el teclado y los guarda en el archivo
seguir = true;
while(seguir)
{
cout<<"Digite un nombre (FIN para terminar): ";
gets(nombre);
// Se usa la gets(), en vez de cin,
para poder leer líneas
de texto que tengan espacios en blanco para separar palabras
if (strcmp(nombre,"FIN") == 0) // Se termina el proceso
seguir = false;
else
{
// Se escriben los datos leidos en el archivo
salida << nombre << "\n";
con++;
}
}
salida.close();
cout << "\n" << con << " registros copiados en datos.txt\n";
system("PAUSE");
return EXIT_SUCCESS;
}
Lectura
de datos de un archivo de texto:
#include
<cstdlib>
#include
<iostream>
#include
<fstream>
/* Programa que permite leer un archivo de datos de tipo texto. El programa verifica que el archivo exista en el direcorio de trabajo */
using
namespace std;
int main(int argc, char *argv[])
{ // Abre un archivo que supuestamente existe
ifstream entrada("datos.txt");
// Verifica la existencia del archivo
if(!entrada)
{
cout << "\nNo puede abrirse el archivo: datos.txt";
system("PAUSE");
return
EXIT_SUCCESS;
} // Despliega el contenido del archivo
char datos[100];
while(entrada)
{
entrada.getline(datos,sizeof(datos));
cout << "\n" << datos;
}
entrada.close();
system("PAUSE");
return EXIT_SUCCESS;
} // Fin del programa
ARCHIVOS BINARIOS:
Creación de una archivo binario:
/////////////////////////////////////////////////////
// mainW.CPP : GRABA UN ARCHIVO EN MODO BINARIO //
/////////////////////////////////////////////////////
#include
<cstdlib>
#include
<iostream>
#include
<fstream>
using
namespace std;
struct
empleado
{
int numero;
char nombre[31];
float sueldo;
};
int main(int argc, char *argv[])
{
ofstream
salida("EMPRESA.DAT",
ios::binary);
if(!salida)
{
cout << "\nNo puede abrirse el archivo EMPRESA.DAT\n";
return EXIT_SUCCESS;
}
empleado unempleado; // Se define la variable tipo empleado
do
{
cout << "Número (0=Fin) : ";
cin>> unempleado.numero; // Se lee el numero
cin.ignore(); //ignora los caracteres siguientes en la entrada
if(!unempleado.numero) // Si numero es cero termina el programa
return EXIT_SUCCESS;
cout
<< "Nombre : ";
cin.getline(unempleado.nombre,31); //Se lee el nombre
cout << "Sueldo : ";
cin>> unempleado.sueldo; // Se lee el sueldo
cin.ignore(); //ignora los caracteres siguientes en la entrada
salida.write((char*) &unempleado,sizeof(unempleado)); // Escribe en el archivo
}while(unempleado.numero != 0);
}// Fin del programa
Lectura de un archivo binario:
/////////////////////////////////////////////////////
// MAINBINLEER.CPP : GRABA UN ARCHIVO EN MODO BINARIO //
/////////////////////////////////////////////////////
#include
<cstdlib>
#include
<iomanip>
#include
<iostream>
#include
<fstream>
using
namespace std;
struct
empleado
{
int numero;
char nombre[31];
float sueldo;
};
int main(int argc, char *argv[])
{
ifstream
entrada("EMPRESA.DAT", ios::binary);
// Se abre el archivo
if(!entrada) // Se verifica si se pudo abrir
el archivo de datos
{
cout << "\nNo puede abrirse el archivo EMPRESA.DAT\n";
return EXIT_SUCCESS;
}
empleado unempleado; // Se define la variable del registro de datos
// Se inicia al proceso de lectura de datos desde el archivo
while(!entrada.eof()
&& !entrada.fail())
{
entrada.read((char*) &unempleado,sizeof(struct empleado)); // Se lee un registro de datos desde el archivo
if(!entrada.eof()) // Se verifica si se alcanzo el EOF
{
cout<<"Codigo: "<< unempleado.numero<<endl;
cout<<"Nombre: "<<unempleado.nombre<<endl;
cout.precision(2); // Fijar dos decimales para los numeros
cout.setf(ios::fixed);
cout<<"Sueldo:"<<unempleado.sueldo<<endl;
}
} // Se termina la lectura de datos porque se llega al fin de archivo
cout<<"\nFin de archivo..."<<endl;
system("PAUSE");
return EXIT_SUCCESS;
} // Fin del programa