¿Cómo emplear archivos con clase?

¿Cómo utilizar archivos con clase, constructor y destructor al mismo tiempo?
Respuesta
1
Aqui te envio este codigo fuente que te puede servir de ayuda para lo que estas buscando.
#include <fstream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
struct REGISTRO{
long cod;
char nom[40];
};
class manejoArchivos {
fstream archivo; //variable para manejar archivos
char nombreFile[20]; //variable para guardar la ruta y nombre del archivo en disco
REGISTRO reg; //estructura de los registro del archivo
public:
manejoArchivos(char *nombre); //constructor
void AbrirEscritura(); //Abrir el archivo para escribir
void AbrirLectura(); //Abrir el archivo para leer
void escribirRegistro(long cod, char *nom) ; //escribe registro en el archivo
void leerRegistro();
void CerrarArchivo(); //Cerrar el archivo
void mostrarRegistros();
~manejoArchivos(); //Destructor
};
//Al constructor se le envía la cadena con la ruta y el nombre del archivo
//que se creará en el disco ejemplo "A:\AIMER.DAT"
manejoArchivos::manejoArchivos(char *nombre)
{
strcpy(nombreFile,nombre);
}
//Esta funcion abre el archivo en modo escritura, binario, adicionar registros
//al final y si no existe lo crea, el nombre del archivo
//en el disco es el nombre que se le envío en el constructor.
void manejoArchivos::AbrirEscritura()
{
archivo.open(nombreFile,ios::out|ios::app|ios::binary);
}
void manejoArchivos::AbrirLectura()
{
archivo.open(nombreFile,ios::in |ios::binary);
}
//Este método guarda registros en el archivo.
//Recibe los parametros cod y nom que son la estructura de los registros
//del archivo.
void manejoArchivos::escribirRegistro(long cod, char *nom)
{
reg.cod = cod;
strcpy(reg.nom,nom);
archivo.write((char*)&reg,sizeof(reg));
}
void manejoArchivos::leerRegistro()
{
archivo.read((char*)&reg, sizeof(reg));
}
void manejoArchivos::mostrarRegistros()
{
while(!archivo.eof())
{
archivo.read((char*)&reg, sizeof(reg));
if (archivo.eof()) break;
cout <<"\nCodigo: "<<reg.cod;
cout <<"\nNombre: "<<reg.nom;
}
}
//Cierra el archivo en cualquier modo (esritura o lectura)
void manejoArchivos::CerrarArchivo()
{
archivo.close();
}
//El destructor cierra el archivo por si se te olvida cerrarlo.
manejoArchivos::~manejoArchivos()
{
archivo.close();
}
/*EJEMPLO 1:
Este programa crea un archivo c:\prueba.dat
se capturan dos variables se guardan en el archivo
luego muestra la información que se guardo.
*/
void main()
{
manejoArchivos file1("c:\prueba.dat"); //Declaro mi objeto file1 de tipo manejoArchivos
//Al mismo tiempo le estoy mandando el nombre del
//archivo "c:\prueba.dat" al constructor
clrscr();
gotoxy(15,3); cout <<"EJEMPLO DE PRUEBA. MANEJO DE ARCHIVOS CON CLASES EN C++";
gotoxy(12,4); cout <<"AIMER RIVERA CENTENO. Experto en C y C++ de todoExpertos.com";
long cod;
char nom[40];
REGISTRO temp;
gotoxy(10,6);cout <<"Digite Código (numerico): "; cin >>cod;
gotoxy(10,7);cout <<"Digite nombre (cadena): "; gets(nom);
file1.AbrirEscritura();
file1.escribirRegistro(cod,nom); //guardamos los registros en el archivo
file1.CerrarArchivo(); //Cerramos el archivo
gotoxy(10,8); cout <<"Se escribieron los registros satisfactoriamente";
gotoxy(10,10); cout <<"PROCESO DE LECTURA DEL ARCHIVO";
file1.AbrirLectura();
file1.mostrarRegistros();
file1.CerrarArchivo();
cout <<"\nArchivo fue abierto satisfactoriamente para leer";
getch();
}
Ya lo probé en el compilador del Borland C++ 3.1
Espero que te sirva.
La próxima vez dejame tu correo para poder enviarte más información.
Comenta con tus amigos del servicio que presta todoExpertos y que ya cuentan con un gran experto en C++.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas