// Programación en C++ para Ingenieros, Ed. Thomson Paraninfo, 2006 // Capítulo 10: Ficheros // Inclusión de las librerías #include <iostream> #include <fstream> #include <math.h> using namespace std; // Prototipos void fusionarFicheros(ifstream& f1, ifstream& f2, ofstream& fResu); template <class T> void abreFichero(T& fich, const char* nombre); int main(void) { char nombre1[100], nombre2[100]; cout << "Introduce el nombre del primer fichero a fusionar: "; cin >> nombre1; ifstream f1; abreFichero(f1, nombre1); cout << "Introduce el nombre del segundo fichero a fusionar: "; cin >> nombre2; ifstream f2; abreFichero(f2, nombre2); char nombreDest[100]; cout << "Introduce el nombre del fichero destino: "; cin >> nombreDest; ofstream fDest; abreFichero(fDest, nombreDest); fusionarFicheros(f1, f2, fDest); f1.close(); f2.close(); fDest.close(); return 0; } // Funcion generica para abrir un fichero de // fomra que se puede usar tanto para ficheros // de entrada (ifstream) como de salida (ofstream) template <class T> void abreFichero(T& fich, const char* nombre) { fich.open(nombre); if ( !fich ) { cout << "No puedo abrir el fichero " << nombre << endl; exit( 1 ); } } void fusionarFicheros(ifstream& f1, ifstream& f2, ofstream& fDest) { char c; f1.unsetf(ios::skipws); // Ponemos en fDest el contenido del primer fichero while (f1 >> c) fDest << c; f2.unsetf(ios::skipws); // Ponemos en fDest el contenido del segundo fichero while (f2 >> c) fDest << c; }