|
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.
Parameters
ch | - | character to put into input stream |
Return value
*this
.
Exceptions
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.
Example
demonstrates the difference between modifying and non-modifying putback().
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 | #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:
1 2 3 | Yello, world putback failed Hello, world |
See also
puts one character back in the input sequence (public member function of std::basic_streambuf ) | |
unextracts a character (public member function) | |
reads the next character without extracting it (public member function) |
Please login to continue.