Sunteți pe pagina 1din 5

Manejo de archivo o ficheros en C++

Se verá, la entrada y/o salida de datos utilizando ficheros, lo cual será imprescindible para
un gran número de aplicaciones a desarrollar.
Recuerde que la librería iostream es un componente de la biblioteca estándar
(STL) del lenguaje de programación C++ que es utilizado para operaciones de
entrada/salida. Su nombre es un acrónimo de Input/Output Stream. El flujo de entrada y
salida de datos en C++ (y su predecesor C) no se encuentra definida dentro de la sintaxis
básica y se provee por medio de librerías de funciones especializadas como iostream.
iostream define los siguientes objetos:

 cin : Flujo de entrada


 cout : Flujo de salida
 cerr : Flujo de error no almacenado.
 clog : Flujo de error almacenado.

Todos los objetos derivados de iostream hacen parte del espacio de nombres std. (using
namespace std;)
Para el manejo de ficheros, a diferencia de los streams para dispositivos estándar, los
cuales son creados y abiertos de manera automática, para trabajar con archivos en discos
se debe primeramente "abrir el archivo", y luego de haber terminado de leer o escribir
datos en el mismo, se debe "cerrar el archivo". En C++, en orden de trabajar con archivos
en disco, se puede emplear las clases fstream, ifstream, y ofstream. Si usted desea
abrir un archivo específico en modo de lectura y escritura use un objeto de la
clase fstream, por el contrario, si desea abrir un archivo solo para lectura o solo para
escritura use objetos de la clase ifstream y ofstream, respectivamente.

 fopen : Esta función sirve para abrir y crear ficheros en disco.


 feof: Esta función sirve para determinar si el cursor dentro del archivo encontró el
final (end of file).
 rewind: Literalmente significa "rebobinar", sitúa el cursor de lectura/escritura al
principio del archivo.
 fclose: Esta función sirve para poder cerrar un fichero que se ha abierto.

Para lectura de archivos se usan


Un archivo generalmente debe verse como un string (una cadena de caracteres) que está
guardado en el disco duro. Para trabajar con los archivos existen diferentes formas y
diferentes funciones. Las funciones que se podría usar para leer un archivo son:

 char fgetc(FILE *archivo)


 char *fgets(char *buffer, int tamano, FILE *archivo)
 size_t fread(void *puntero, size_t tamano, size_t cantidad, FILE *archivo);
 int fscanf(FILE *fichero, const char *formato, argumento, ...);
Las primeras dos de estas funciones son muy parecidas entre sí. Pero la tercera, por el
número y el tipo de parámetros, se puede dar cuenta de que es muy diferente, por eso se
trata aparte junto al fwrite que es su contraparte para escritura.
Para escritura de archivos se usan
Se pueden crear y escribir ficheros con la información que se desea almacenar, Para trabajar
con los archivos existen diferentes formas y diferentes funciones. Las funciones que se podría
usar para escribir dentro de un archivo son:

 int fputc(int caracter, FILE *archivo)


 int fputs(const char *buffer, FILE *archivo)
 size_t fwrite(void *puntero, size_t tamano, size_t cantidad, FILE *archivo);
 int fprintf(FILE *archivo, const char *formato, argumento, ...);

Ficheros
El estándar de C++ contiene varias funciones para la edición de ficheros, éstas están
definidas en la cabecera <iostream> y por lo general empiezan con la letra f, haciendo
referencia a file. Adicionalmente se agrega un tipo FILE, el cual se usará como apuntador
a la información del fichero. La secuencia que usará para realizar operaciones será la
siguiente:

 Crear un apuntador del tipo FILE *


 Abrir el archivo utilizando la función fopen y asignándole el resultado de la llamada
a nuestro apuntador.
 Hacer las diversas operaciones (lectura, escritura, etc).
 Cerrar el archivo utilizando la función fclose.

Primer ejemplo, en la Fig. 1. Validar la apertura de un archivo.

#include <iostream>

using namespace std;


main() {
FILE *alias;
alias = fopen("EJEMPLO.txt", "rb");
if (alias==NULL)
{
cout << "\n\r No se puede abrir el archivo !!!"<<endl;
system("pause");
}
else{
cout << "\n\r Si existe el archivo EJEMPLO.txt!!!"<<endl;
system("pause");
}
return 0;
}
Fig. 1. Validar la apertura de un archivo.
Segundo ejemplo, en la Fig. 2. Leer un archivo ya creado.

#include <iostream>
using namespace std;
main() {
FILE *alias;
char buffer[100];
alias = fopen("EJEMPLO.txt", "r");
if (alias==NULL)
{
cout << "\n\r No se puede abrir el archivo !!!"<<endl;
system("pause");
}
else{
cout << "\n\r Si existe el archivo EJEMPLO.txt!!!"<<endl;
fscanf(alias,"%s",buffer);
cout <<buffer<<endl;
system("pause");
}
fclose ( alias );
return 0;
}
Fig. 2. Leer un archivo “EJEMPLO.TXT” en modo lectura y leyendo dentro de él.

Tercer ejemplo, en la Fig. 3. Crear un archivo test.$$$, y llenarlo con una oración "Esta línea de
texto se guardará en el archivo test.$$$".

// Ejemplo de ifstream y ofstream


// En este programa se demuestra la forma de crear un archivo
// en disco por medio de objeto ofstream, y la manera abrir y
// leer un archivo por medio de un objeto ifstream.

#include <iostream>
#include <fstream>
#include <cstring>
#include <clocale>

using namespace std;

char *filename = "test.$$$";


char *data = "Esta línea de texto se guardará en el archivo test.$$$";

void escogerIdioma();
int crearArchivo(char *filename);
int leerArchivo(char *filename);

int main()
{
escogerIdioma();
crearArchivo(filename);
leerArchivo(filename);
cout << endl << "Presione <Enter>...";
cin.get();
return 0;
}

// crear un archivo en disco cuyo nombre es dado por filename


int crearArchivo(char *filename)
{
ofstream fichero(filename); // crear o rescribir archivo
// verificar la creación del archivo
if ( fichero.bad() ) {
cout << "Error al tratar de abrir archivo";
cin.get();
return 1;
}

// escribir datos al archivo


for (unsigned int t = 0; t < strlen(data); t++ )
fichero.put(data[t] );

fichero.close();
cout << "archivo creado exitosamente" << endl;
return 0;
}

// abrir un archivo en disco cuyo nombre es dado por filename


int leerArchivo(char *filename)
{
ifstream fichero(filename); // abrir archivo para lectura

// verificar la apertura del archivo


if ( fichero.bad() ) {
cout << "Error al tratar de abrir archivo";
cin.get();
return 1;
}

// lectura de datos
while ( ! fichero.eof() ) cout << (char)fichero.get();
fichero.close();
cout << endl << "archivo leido exitosamente" << endl;
return 0;
}

void escogerIdioma(){
setlocale(LC_CTYPE, "Spanish");
}
Fig. 3. Crear un archivo test.$$$, y llenarlo con una oración "Esta línea de texto se guardará en el
archivo test.$$$".

S-ar putea să vă placă și