std::basic_istream<CharT,Traits>:: putback
|
basic_istream
&
putback
(
char_type ch
)
;
|
||
Setzt das Zeichen ch zurück in den Eingabestrom, sodass das nächste extrahierte Zeichen ch sein wird.
Löscht zuerst
eofbit
, verhält sich dann wie eine
UnformattedInputFunction
. Nach dem Konstruieren und Prüfen des Sentry-Objekts, falls
rdbuf()
nicht null ist, ruft es
rdbuf
(
)
-
>
sputbackc
(
ch
)
auf, was wiederum
rdbuf
(
)
-
>
pbackfail
(
ch
)
aufruft, falls
ch
nicht dem zuletzt extrahierten Zeichen entspricht.
Wenn
rdbuf()
null ist oder wenn
rdbuf
-
>
sputbackc
(
ch
)
Traits
::
eof
(
)
zurückgibt, ruft es
setstate
(
badbit
)
auf.
In jedem Fall setzt es den
gcount()
Zähler auf null.
Inhaltsverzeichnis |
Parameter
| ch | - | Zeichen, das in den Eingabestream eingefügt werden soll |
Rückgabewert
* this
Exceptions
Wenn eine interne Operation eine Ausnahme auslöst, wird diese abgefangen und
badbit
wird gesetzt. Wenn
exceptions()
für
badbit
gesetzt ist, wird die Ausnahme erneut ausgelöst.
Beispiel
Demonstriert den Unterschied zwischen modifizierendem und nicht-modifizierendem
putback()
.
#include <iostream> #include <sstream> 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::cout << "--\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(); std::cout << "--\n"; if (s2.putback('H')) // non-modifying putback std::cout << s2.rdbuf() << '\n'; else std::cout << "putback failed\n"; }
Ausgabe:
Yello, world -- putback failed -- Hello, world
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2243 | C++98 |
sputbackc()
wurde ohne Argument aufgerufen
|
aufgerufen mit ch |
Siehe auch
|
setzt ein Zeichen zurück in die Eingabesequenz
(öffentliche Elementfunktion von
std::basic_streambuf<CharT,Traits>
)
|
|
|
entnimmt ein Zeichen zurück
(öffentliche Elementfunktion) |
|
|
liest das nächste Zeichen ohne es zu entnehmen
(öffentliche Elementfunktion) |