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*)®,sizeof(reg)); } void manejoArchivos::leerRegistro() { archivo.read((char*)®, sizeof(reg)); } void manejoArchivos::mostrarRegistros() { while(!archivo.eof()) { archivo.read((char*)®, 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++.