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.
ch | - | character to put into input stream |
*this
.
failure
if an error occurred (the error state flag is not goodbit
) and exceptions()
is set to throw for that state. If an internal operation throws an exception, it is caught and badbit
is set. If exceptions()
is set for badbit
, the exception is rethrown.
demonstrates the difference between modifying and non-modifying putback().
#include <sstream> #include <iostream> int main() { std::stringstream s1("Hello, world"); // IO stream s1.get(); if (s1.putback('Y')) // modifies the buffer std::cout << s1.rdbuf() << '\n'; else std::cout << "putback failed\n"; std::istringstream s2("Hello, world"); // input-only stream s2.get(); if (s2.putback('Y')) // cannot modify input-only buffer std::cout << s2.rdbuf() << '\n'; else std::cout << "putback failed\n"; s2.clear(); if (s2.putback('H')) // non-modifying putback std::cout << s2.rdbuf() << '\n'; else std::cout << "putback failed\n"; }
Output:
Yello, world putback failed Hello, world
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) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/io/basic_istream/putback