J'ai le code suivant et ça marche plutôt bien (à part le fait que c'est assez lent, mais je m'en fous de ça). Il ne semble pas intuitif que cela écrirait tout le contenu de l'infile à la sortie.Que fait réellement ifstream :: rdbuf()?
// 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;
}
Un aperçu?
J'ajouterais que les appels explicites à 'close()' ne sont pas nécessaires. Les destructeurs feraient de même de toute façon. Et cela sauve quelques lignes. ;) –