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 Falla) 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
| Dieser Abschnitt ist unvollständig Grund: kein 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>) |
| verschiebt den nächsten Zeiger in der Eingabesequenz um eins zurück (öffentliche Member-Funktion von std::basic_streambuf<CharT,Traits>) | |
| legt ein Zeichen zurück in die Eingabesequenz (öffentliche Member-Funktion von std::basic_streambuf<CharT,Traits>) | |
| entfernt ein Zeichen aus dem Eingabestrom (public member function of std::basic_istream<CharT,Traits>) | |
| legt ein Zeichen in den Eingabestrom zurück (public member function of std::basic_istream<CharT,Traits>) |