Namespaces
Variants

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

From cppreference.net
protected :
virtual int_type pbackfail ( int_type c = Traits :: eof ( ) ) ;

Cette fonction ne peut être appelée que si l'une des conditions suivantes est satisfaite :

  • gptr ( ) est nul ,
  • gptr ( ) == eback ( ) , ou
  • traits :: eq ( traits :: to_char_type ( c ) , gptr ( ) [ - 1 ] ) renvoie false .

Cette fonction est appelée par les fonctions publiques sungetc() et sputbackc() (qui, à leur tour, sont appelées par basic_istream::unget et basic_istream::putback ) lorsque l'une des conditions suivantes se produit :

1) Il n'y a pas de position de remise dans la zone de lecture ( pbackfail() est appelé sans arguments). Dans cette situation, le but de pbackfail() est de reculer d'un caractère dans la zone de lecture, si la séquence de caractères associée le permet (par exemple, un streambuf lié à un fichier peut recharger le tampon à partir du fichier, en commençant un caractère plus tôt).
2) L'appelant tente de remettre un caractère différent de celui récupéré précédemment ( pbackfail() est appelé avec le caractère à remettre). Dans cette situation, l'objectif de pbackfail() est de placer le caractère c dans la zone de lecture à la position juste avant basic_streambuf::gptr() , et, si possible, de modifier la séquence de caractères associée pour refléter ce changement. Cela peut impliquer de reculer la zone de lecture comme dans la première variante.

La version de base par défaut de cette fonction ne fait rien et retourne Traits :: eof ( ) dans toutes les situations. Cette fonction est redéfinie par les classes dérivées : basic_stringbuf::pbackfail , basic_filebuf::pbackfail , strstreambuf::pbackfail , et est censée être redéfinie par les classes de flux définies par l'utilisateur et les bibliothèques tierces.

Table des matières

Paramètres

ch - caractère à remettre ou Traits :: eof ( ) si seule la restitution est demandée

Valeur de retour

Traits :: eof ( ) en cas d'échec, une autre valeur pour indiquer le succès. La version de la classe de base échoue toujours.

Exemple

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR S'applique à Comportement publié Comportement corrigé
LWG 32 C++98 la condition d'appel ' traits :: eq ( * gptr ( ) ,traits :: to_char_type ( c ) )
renvoie false ' ne correspondait pas à la description de sputbackc()
corrigé pour correspondre
à la description

Voir aussi

[virtual]
recule la séquence d'entrée pour remettre un caractère, sans affecter le fichier associé
(fonction membre protégée virtuelle de std::basic_filebuf<CharT,Traits> )
[virtual]
remet un caractère dans la séquence d'entrée
(fonction membre protégée virtuelle de std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
recule la séquence d'entrée pour remettre un caractère
(fonction membre protégée virtuelle de std::strstreambuf )
recule le pointeur suivant dans la séquence d'entrée d'une position
(fonction membre publique)
remet un caractère dans la séquence d'entrée
(fonction membre publique)