std::basic_istream<CharT,Traits>::putback
basic_istream& putback( char_type ch ); | ||
Puts the character ch back to the input stream so the next extracted character will be ch.
First clears eofbit
, then behaves as UnformattedInputFunction. After constructing and checking the sentry object, if rdbuf() is not null, calls rdbuf()->sputbackc(ch), which calls rdbuf()->pbackfail(ch) if ch does not equal the most recently extracted character.
If rdbuf()
is null or if rdbuf->sputbackc(ch) returns Traits::eof(), calls setstate(badbit).
In any case, sets the gcount()
counter to zero.
Contents |
[edit]Parameters
ch | - | character to put into input stream |
[edit]Return value
*this
[edit]Exceptions
If an internal operation throws an exception, it is caught and badbit is set. If exceptions() is set for badbit
, the exception is rethrown.
[edit]Example
Demonstrates the difference between modifying and non-modifying putback()
.
#include <iostream>#include <sstream> int main(){std::stringstream s1("Hello, world");// IO stream s1.get();if(s1.putback('Y'))// modifies the bufferstd::cout<< s1.rdbuf()<<'\n';elsestd::cout<<"putback failed\n"; std::cout<<"--\n"; std::istringstream s2("Hello, world");// input-only stream s2.get();if(s2.putback('Y'))// cannot modify input-only bufferstd::cout<< s2.rdbuf()<<'\n';elsestd::cout<<"putback failed\n"; s2.clear(); std::cout<<"--\n"; if(s2.putback('H'))// non-modifying putbackstd::cout<< s2.rdbuf()<<'\n';elsestd::cout<<"putback failed\n";}
Output:
Yello, world -- putback failed -- Hello, world
[edit]Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 2243 | C++98 | sputbackc() was called without any argument | called with ch |
[edit]See also
puts one character back in the input sequence (public member function of std::basic_streambuf<CharT,Traits> ) | |
unextracts a character (public member function) | |
reads the next character without extracting it (public member function) |