std::strstreambuf::pbackfail
Von cppreference.com
< cpp | io | strstreambuf
| protected: virtual int_type pbackfail( int_type c = EOF ); |
(veraltet in C++98) (entfernt in C++26) |
|
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 an, dass der Lese-Bereich um ein Zeichen zurückgesetzt wird (
pbackfail() wird ohne Argumente oder mit EOF als Argument aufgerufen)a) Zuerst wird geprüft, ob eine Rücksetzposition vorhanden ist. Wenn dies nicht der Fall ist, schlägt die Operation fehl (
strstreambuf hat keine externe Zeichenquelle zum erneuten Lesen).b) Wenn der Aufrufer falsch lag und die Rücksetzposition 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 Rücksetzposition vorhanden ist. Wenn dies nicht der Fall ist, schlägt die Operation fehl.
b) Dann wird geprüft, welches Zeichen sich an der Rücksetzposition befindet. Wenn das dort gespeicherte Zeichen bereits gleich (char)c ist, wird einfach basic_streambuf::gptr() dekrementiert.
c) Andernfalls, wenn der Puffer unveränderlich ist (dieses strstreambuf wurde mit einem String-Literal oder einem anderen const-Array konstruiert), schlägt die Operation fehl.
d) Andernfalls wird basic_streambuf::gptr() dekrementiert und c an die durch gptr() nach der Anpassung zeigende Stelle geschrieben.
Inhalt |
[bearbeiten] Parameter
| c | - | das Zeichen, das zurückgegeben 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 EOF, in welchem Fall ein nicht spezifizierter Wert ungleich EOF zurückgegeben wird.
EOF bei Fehlschlag.
[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>) |