Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | io‎ | basic stringbuf
 
 
 
 
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 (die wiederum von basic_istream::unget und basic_istream::putback aufgerufen werden).

1) Der Aufrufer fordert, dass der Lese-Bereich um ein Zeichen zurückgesetzt wird (pbackfail() wird ohne Argumente oder mit Traits::eof() als Argument aufgerufen).
a) Zuerst wird geprüft, ob eine Putback-Position vorhanden ist. Wenn nicht, schlägt die Operation fehl. (stringbuf hat keine externe Zeichenquelle zum erneuten Lesen).
b) Wenn der Aufrufer im Irrtum war 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 zuvor gelesen wurde (pbackfail() wird mit dem zurückzulegenden Zeichen aufgerufen), in diesem Fall
a) Zuerst wird geprüft, ob eine Putback-Position vorhanden ist. Wenn nicht, schlägt die Operation fehl.
b) Dann wird geprüft, welches Zeichen sich an der Putback-Position befindet. Wenn das dort gespeicherte Zeichen gleich c ist, wie bestimmt durch Traits::eq(to_char_type(c), gptr()[-1]), wird einfach basic_streambuf::gptr() dekrementiert.
c) Andernfalls, wenn der Puffer nur zum Lesen geöffnet ist, schlägt die Operation fehl.
d) Andernfalls, wenn der Puffer zum Schreiben geöffnet ist (mode && std::ios_base::out ist ungleich Null), dann wird basic_streambuf::gptr() dekrementiert und c an die Stelle geschrieben, auf die gptr() nach der Anpassung zeigt.

Inhalt

[edit] Parameter

c - das zurückzulegende Zeichen oder Traits::eof(), um anzuzeigen, dass das Zurücksetzen des Lese-Bereichs angefordert wird

[edit] Rückgabewert

c bei Erfolg, es sei denn, c war Traits::eof(), in diesem Fall wird Traits::not_eof(c) zurückgegeben.

Traits::eof() bei Fehlschlag.

[edit] Beispiel

[edit] Siehe auch

[virtuell]
legt ein Zeichen in die Eingabesequenz zurück, möglicherweise unter Änderung der Eingabesequenz
(virtuelle geschützte Member-Funktion von std::basic_streambuf<CharT,Traits>) [bearbeiten]
verschiebt den nächsten Zeiger in der Eingabesequenz um eins zurück
(öffentliche Member-Funktion von std::basic_streambuf<CharT,Traits>) [bearbeiten]
legt ein Zeichen zurück in die Eingabesequenz
(öffentliche Member-Funktion von std::basic_streambuf<CharT,Traits>) [bearbeiten]
entfernt ein Zeichen aus dem Eingabestrom
(public member function of std::basic_istream<CharT,Traits>) [edit]
legt ein Zeichen in den Eingabestrom zurück
(public member function of std::basic_istream<CharT,Traits>) [edit]