What does ifstream::rdbuf() actually do?
c++, ifstream
Solution
Yes, it's specified in the standard and it's actually quite simple. `rdbuf()` just returns a pointer to the underlying `basic_streambuf` object for the given `[io]stream` object.
`basic_ostream<...>` has an overload for `operator<<` for a pointer to `basic_streambuf<...>` which writes out the contents of the `basic_streambuf<...>`.
Problem
I have the following code and it works pretty good (other than the fact that it's pretty slow, but I don't care much about that). It doesn't seem intuitive that this would write the entire contents of the infile to the outfile. ``` // 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; } ``` Any insight?