Namensräume
Varianten
Aktionen

std::basic_streambuf<CharT,Traits>::pbackfail

Von cppreference.com
< cpp‎ | io‎ | basic streambuf
 
 
 
 
protected:
virtual int_type pbackfail( int_type c = Traits::eof() );

Diese Funktion kann nur aufgerufen werden, wenn eine der folgenden Bedingungen erfüllt ist:

  • gptr() ist Null,
  • gptr() = eback(), oder
  • traits::eq(traits::to_char_type(c), gptr()[-1]) gibt false zurück.

Diese Funktion wird von den öffentlichen Funktionen sungetc() und sputbackc() (die wiederum von basic_istream::unget und basic_istream::putback aufgerufen werden) aufgerufen, wenn entweder

1) Es gibt keine Rückstellposition im Lesegebiet (pbackfail() wird ohne Argumente aufgerufen). In dieser Situation ist der Zweck von pbackfail(), das Lesegebiet um ein Zeichen zurückzusetzen, falls die zugeordnete Zeichensequenz dies zulässt (z. B. kann ein dateibezogener Streambuf den Puffer aus einer Datei neu laden, beginnend mit einem Zeichen früher).
2) Der Aufrufer versucht, ein anderes Zeichen zurückzustellen als das zuvor abgerufene (pbackfail() wird mit dem zurückzustellenden Zeichen aufgerufen). In dieser Situation besteht der Zweck von pbackfail() darin, das Zeichen c in das Lesegebiet an die Position unmittelbar vor basic_streambuf::gptr() zu legen und, falls möglich, die zugeordnete Zeichensequenz zu ändern, um diese Änderung widerzuspiegeln. Dies kann das Zurücksetzen des Lesegebiets wie in der ersten Variante beinhalten.

Die Standard-Basisklassenversion dieser Funktion tut nichts und gibt in allen Situationen Traits::eof() zurück. Diese Funktion wird von den abgeleiteten Klassen überschrieben: basic_stringbuf::pbackfail, basic_filebuf::pbackfail, strstreambuf::pbackfail und soll von benutzerdefinierten und Drittanbieter-Streamklassen überschrieben werden.

Inhalt

[bearbeiten] Parameter

ch - Zurückzustellenndes Zeichen oder Traits::eof(), wenn nur ein Zurücksetzen angefordert wird

[bearbeiten] Rückgabewert

Traits::eof() im Fehlerfall, ein anderer Wert, um Erfolg anzuzeigen. Die Basisklassenversion schlägt immer fehl.

[bearbeiten] Beispiel

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 32 C++98 Die Aufrufbedingung 'traits::eq(*gptr(),traits::to_char_type(c))
gibt false zurück' passte nicht zur Beschreibung von sputbackc()
korrigiert, um zu passen
die Beschreibung

[bearbeiten] Siehe auch

[virtuell]
Setzt die Eingabesequenz zurück, um ein Zeichen zurückzugeben, ohne die zugehörige Datei zu beeinflussen
(virtuelle geschützte Memberfunktion von std::basic_filebuf<CharT,Traits>) [bearbeiten]
[virtuell]
Gibt ein Zeichen in die Eingabesequenz zurück
(virtuelle geschützte Memberfunktion von std::basic_stringbuf<CharT,Traits,Allocator>) [bearbeiten]
[virtuell]
Setzt die Eingabesequenz zurück, um ein Zeichen zurückzugeben
(virtuelle geschützte Memberfunktion von std::strstreambuf) [bearbeiten]
verschiebt den nächsten Zeiger in der Eingabesequenz um eins zurück
(öffentliche Memberfunktion) [bearbeiten]
legt ein Zeichen zurück in die Eingabesequenz
(öffentliche Memberfunktion) [bearbeiten]