Tôi có đoạn mã sau và nó hoạt động khá tốt (khác với thực tế là nó khá chậm, nhưng tôi không quan tâm nhiều về điều đó). Nó không có vẻ trực quan mà điều này sẽ viết toàn bộ nội dung của các infile để outfile.Ifstream :: rdbuf() thực sự làm gì?
// 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;
}
Có thông tin chi tiết nào không?
Tôi sẽ thêm lệnh gọi rõ ràng đó vào 'close()' không cần thiết. Destructor sẽ làm như vậy anyway. Và điều đó tiết kiệm một số dòng. ;) –