Namespaces
Variants

std::basic_stringbuf<CharT,Traits,Allocator>:: pbackfail

From cppreference.net
protected :
virtual int_type pbackfail ( int_type c = Traits :: eof ( ) )

Diese geschützte virtuelle Funktion wird von den öffentlichen Funktionen basic_streambuf::sungetc und basic_streambuf::sputbackc aufgerufen (welche wiederum von basic_istream::unget und basic_istream::putback aufgerufen werden).

1) Der Aufrufer fordert, dass der Get-Bereich um ein Zeichen gesichert wird ( pbackfail() wird ohne Argumente oder mit Traits :: eof ( ) als Argument aufgerufen)
a) Zuerst wird geprüft, ob eine Putback-Position vorhanden ist, und falls dies tatsächlich nicht der Fall ist, schlägt es fehl. (stringbuf hat keine externe Zeichenquelle zum erneuten Lesen)
b) Falls der Aufrufer falsch lag und die Putback-Position tatsächlich verfügbar ist, wird einfach basic_streambuf::gptr() dekrementiert, z.B. durch Aufruf von gbump ( - 1 ) .
2) Der Aufrufer versucht, ein anderes Zeichen zurückzulegen als das zuvor entnommene ( pbackfail() wird mit dem Zeichen aufgerufen, das zurückgelegt werden soll), in welchem Fall
a) Zuerst wird geprüft, ob eine Putback-Position vorhanden ist, und falls nicht, schlägt es fehl.
b) Überprüft dann, welches Zeichen sich in der Putback-Position befindet. Wenn das dort gehaltene Zeichen bereits gleich c ist, wie bestimmt durch Traits :: eq ( to_char_type ( c ) , gptr ( ) [ - 1 ] ) , dann dekrementiert es einfach basic_streambuf::gptr() .
c) Andernfalls, wenn der Puffer nur zum Lesen geöffnet ist, schlägt fehl.
d) Andernfalls, wenn der Puffer zum Schreiben geöffnet ist ( mode && std:: ios_base :: out ungleich Null ist), dann dekrementiert basic_streambuf::gptr() und schreibt c an die durch gptr() nach der Anpassung gezeigte Position.

Inhaltsverzeichnis

Parameter

c - das zurückzustellende Zeichen oder Traits::eof(), um anzugeben, dass ein Zurücksetzen des Lesebereichs angefordert wird

Rückgabewert

c bei Erfolg, außer wenn c gleich Traits :: eof ( ) war, in welchem Fall Traits :: not_eof ( c ) zurückgegeben wird.

Traits :: eof ( ) bei Fehler.

Beispiel

Siehe auch

[virtual]
setzt ein Zeichen zurück in die Eingabesequenz und modifiziert möglicherweise die Eingabesequenz
(virtuelle geschützte Elementfunktion von std::basic_streambuf<CharT,Traits> )
bewegt den nächsten Zeiger in der Eingabesequenz um eine Position zurück
(öffentliche Elementfunktion von std::basic_streambuf<CharT,Traits> )
setzt ein Zeichen zurück in die Eingabesequenz
(öffentliche Elementfunktion von std::basic_streambuf<CharT,Traits> )
hebt die Extraktion eines Zeichens auf
(öffentliche Elementfunktion von std::basic_istream<CharT,Traits> )
setzt ein Zeichen in den Eingabestrom zurück
(öffentliche Elementfunktion von std::basic_istream<CharT,Traits> )