Mam następujący kod i działa całkiem dobrze (poza tym, że jest dość powolny, ale nie przejmuję się tym). Nie wydaje się intuicyjne, że zapisałoby to całą zawartość pliku do pliku wyjściowego.Co właściwie robi funkcja if :: 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;
}
Dowolny wgląd?
Dodam, że jawne wywołania funkcji 'close()' nie są potrzebne. Destruktorzy i tak by postąpili tak samo. A to oszczędza trochę linii. ;) –