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 Falla) 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
| Dieser Abschnitt ist unvollständig Grund: kein 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>) |
| 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>) |