Ich habe den folgenden Code und es funktioniert ziemlich gut (abgesehen von der Tatsache, dass es ziemlich langsam ist, aber das ist mir egal). Es scheint nicht intuitiv, dass dies den gesamten Inhalt der Infile in das Outfile schreiben würde.Was macht ifstream :: rdbuf() eigentlich?
// 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;
}
Irgendein Einblick?
Ich würde hinzufügen, dass explizite Aufrufe von 'close()' nicht benötigt werden. Destruktoren würden das gleiche tun. Und das spart einige Zeilen. ;) –