Tengo el siguiente código y funciona bastante bien (aparte del hecho de que es bastante lento, pero no me importa mucho). No parece intuitivo que esto escribiría todo el contenido del archivo de entrada en el archivo de salida.¿Qué hace ifstream :: rdbuf() en realidad?
// Returns 1 if failed and 0 if successful
int WriteFileContentsToNewFile(string inFilename, string outFilename)
{
ifstream infile(inFilename.c_str(), ios::binary);
ofstream outfile(outFilename.c_str(), ios::binary);
if(infile.is_open() && outfile.is_open() && infile.good() && outfile.good())
{
outfile << infile.rdbuf();
outfile.close();
infile.close();
}
else
return 1;
return 0;
}
¿Alguna idea?
Agregaría que las llamadas explícitas a 'close()' no son necesarias. Los destructores harían lo mismo de todos modos. Y eso ahorra algunas líneas. ;) –