Reference
C Library
IOstream Library
Strings library
STL Containers
STL Algorithms
Miscellaneous
IOstream Library
manipulators
classes:
filebuf
fstream
ifstream
ios
iostream
ios_base
istream
istringstream
ofstream
ostream
ostringstream
streambuf
stringbuf
stringstream
objects:
cerr
cin
clog
cout
types:
fpos
streamoff
streampos
streamsize
ios
ios::ios
ios::~ios
member functions:
ios::bad
ios::clear
ios::copyfmt
ios::eof
ios::exceptions
ios::fail
ios::fill
ios::good
ios::imbue
ios::init
ios::narrow
ios::operator!
ios::operator void*
ios::rdbuf
ios::rdstate
ios::setstate
ios::tie
ios::widen


ios::rdbuf

public member function
streambuf* rdbuf ( ) const;
streambuf* rdbuf ( streambuf* sb );

Get/set the associated stream buffer

The first syntax returns the stream buffer object associated with the stream.

The second syntax associates the stream with sb and returns the stream buffer object previously associated with the stream. In this case, the buffer's control state is set to goodbit as if a call to member clear().

Parameters

sb
A pointer to the stream buffer object to associate the stream with.

Return Value

A pointer to the stream buffer object associated with the stream before the call.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// redirecting cout's output
#include <iostream>
#include <fstream>
using namespace std;
int main () {
  streambuf *psbuf, *backup;
  ofstream filestr;
  filestr.open ("test.txt");
  backup = cout.rdbuf();     // back up cout's streambuf
  psbuf = filestr.rdbuf();   // get file's streambuf
  cout.rdbuf(psbuf);         // assign streambuf to cout
  cout << "This is written to the file";
  
  cout.rdbuf(backup);        // restore cout's original streambuf
  filestr.close();
  return 0;
}


This example uses both function syntaxes to first get a pointer to a file's streambuf object and later assigns it to cout.

Basic template member declaration

( basic_ios<charT,traits> )
1
2
basic_streambuf<charT,traits> * rdbuf () const;
basic_streambuf<charT,traits> * rdbuf ( basic_streambuf<charT,traits> sb );


See also