Namespaces
Variants

std::basic_istream<CharT,Traits>:: putback

From cppreference.net
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

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

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)