std::basic_streambuf<CharT,Traits>:: sungetc
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
int_type sungetc
(
)
;
|
||
Si une position de remise est disponible dans la zone de lecture ( gptr ( ) > eback ( ) ), alors décrémente le pointeur suivant ( gptr() ) et retourne le caractère qu'il désigne désormais.
Si une position de remise en arrière n'est pas disponible, alors appelle pbackfail() pour reculer la séquence d'entrée si possible.
La fonction de flux d'E/S basic_istream::unget est implémentée en termes de cette fonction.
Table des matières |
Paramètres
(aucun)
Valeur de retour
Si la position de remise était disponible, retourne le caractère vers lequel pointe maintenant le pointeur suivant, converti en
int_type
avec
Traits
::
to_int_type
(
*
gptr
(
)
)
. La prochaine entrée de caractère unique depuis ce tampon de flux retournera ce caractère.
Si la position de remise n'était pas disponible, retourne ce que pbackfail() retourne, c'est-à-dire Traits :: eof ( ) en cas d'échec.
Exemple
#include <iostream> #include <sstream> int main() { std::stringstream s("abcdef"); // gptr() pointe vers 'a' char c1 = s.get(); // c = 'a', gptr() pointe maintenant vers 'b' char c2 = s.rdbuf()->sungetc(); // identique à s.unget() : gptr() pointe à nouveau vers 'a' char c3 = s.get(); // c3 = 'a', gptr() pointe maintenant vers 'b' char c4 = s.get(); // c4 = 'b', gptr() pointe maintenant vers 'c' std::cout << c1 << c2 << c3 << c4 << '\n'; s.rdbuf()->sungetc(); // retour à 'b' s.rdbuf()->sungetc(); // retour à 'a' int eof = s.rdbuf()->sungetc(); // rien à défaire : pbackfail() échoue if (eof == EOF) std::cout << "Rien à défaire après 'a'\n"; }
Sortie :
aaab Rien à défaire après 'a'
Voir aussi
|
replace un caractère dans la séquence d'entrée
(fonction membre publique) |
|
|
dés-extrait un caractère
(fonction membre publique de
std::basic_istream<CharT,Traits>
)
|