filebuf* rdbuf ( ) const;
Get the associated filebuf object
Returns a pointer to the filebuf object associated with the stream.
Parameters
none
Return Value
A pointer to the filebuf object associated with the stream.
Notice that for any successfully constructed ifstream object this pointer is never a null pointer, even if no files have been opened or if the stream is unbuffered.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
// read file data using associated buffer's members
#include <iostream>
#include <fstream>
using namespace std;
int main () {
filebuf *pbuf;
ifstream filestr;
long size;
char * buffer;
filestr.open ("test.txt");
// get pointer to associated buffer object
pbuf=filestr.rdbuf();
// get file size using buffer's members
size=pbuf->pubseekoff (0,ios::end,ios::in);
pbuf->pubseekpos (0,ios::in);
// allocate memory to contain file data
buffer=new char[size];
// get file data
pbuf->sgetn (buffer,size);
filestr.close();
// write content to stdout
cout.write (buffer,size);
free(buffer);
return 0;
}
|
This is an elaborate way to read the contents of a file by using the associated filebuf object's members.
Basic template member declaration
( basic_ifstream<charT,traits,Allocator> )
|
basic_filebuf<charT,traits,Allocator> * rdbuf () const;
|
See also
ios::rdbuf | Get/set the associated stream buffer (public member function) |
|