Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | io‎ | basic filebuf
 
 
 
 
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 aufgerufen). In diesem Fall liest diese Funktion die Datei erneut, beginnend ein Byte früher, und dekrementiert basic_streambuf::gptr(), 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 Rückschiebe-Position vorhanden ist. Wenn nicht, wird der Lese-Bereich durch erneutes Lesen der Datei ab einem Byte früher zurückgesetzt.
a) Dann wird geprüft, welches Zeichen sich an der Rückschiebe-Position befindet. Wenn das dort gespeicherte Zeichen bereits gleich c ist, wie durch Traits::eq(to_char_type(c), gptr()[-1]) bestimmt, wird einfach basic_streambuf::gptr() dekrementiert.
b) Andernfalls, wenn der Puffer seine eigene Lese-Bereich modifizieren darf, wird basic_streambuf::gptr() dekrementiert und c an die Position geschrieben, auf die gptr() nach der Anpassung zeigt.

Diese Funktion modifiziert niemals die Datei, sondern nur den Lese-Bereich des In-Memory-Puffers.

Wenn die Datei nicht geöffnet ist (is_open()=false), gibt diese Funktion sofort Traits::eof() zurück.

Inhalt

[bearbeiten] Parameter

c - Das Zeichen, das zurückgeschoben werden soll, oder Traits::eof(), um anzuzeigen, dass das Zurücksetzen des Lese-Bereichs angefordert wird.

[bearbeiten] 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 Fehler.

[bearbeiten] Beispiel

[bearbeiten] 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]