Namespaces
Variants

std::basic_filebuf<CharT,Traits>:: overflow

From cppreference.net
protected :
virtual int_type overflow ( int_type ch = Traits :: eof ( ) ) ;

Écrit certaines données de la zone de mise en tampon vers la séquence de caractères associée (vers le fichier).

Se comporte comme la version de la classe de base std::basic_streambuf::overflow() , sauf que le comportement de "consommation des caractères" est défini comme suit :

1) D'abord, utilise std::codecvt::out de la locale imbriquée pour convertir les caractères en représentation externe (éventuellement multi-octets), stockée dans un tampon temporaire, comme suit : ( XSIZE est une taille de tampon non spécifiée)
const std::codecvt<CharT, char, typename Traits::state_type>& a_codecvt =
    std::use_facet<std::codecvt<CharT, char, typename Traits::state_type>>(getloc());
typename Traits::state_type state;
CharT* end;
char xbuf[XSIZE];
char* xbuf_end;
std::codecvt_base::result r =
    a_codecvt.out(state, pbase(), pptr(), end, xbuf, xbuf + XSIZE, xbuf_end);
2) Écrit ensuite tous les caractères entièrement convertis du tampon dans le fichier. Formellement, effectue les étapes suivantes en fonction de la valeur de r :
r Opération
std:: codecvt_base :: ok Écrit les caractères dans [ xbuf , xbuf_end ) vers le fichier, et échoue si l'écriture échoue. À ce stade, si pbase ( ) ! = pptr ( ) et pbase ( ) == end sont tous deux true (ce qui signifie que xbuf n'est pas assez grand pour même un caractère externe), alors augmente XSIZE et répète depuis le début.
std:: codecvt_base :: partial Écrit les caractères externes convertis dans [ xbuf , xbuf_end ) vers le fichier, et répète en utilisant les caractères internes non convertis restants dans [ end , pptr ( ) ) . Si l'écriture échoue, échoue (sans répétition).
std:: codecvt_base :: noconv Écrit les caractères dans [ pbase ( ) , pptr ( ) ) vers le fichier.
std:: codecvt_base :: error Échoue.
Si le fichier associé n'est pas ouvert ( is_open() renvoie false ), la sortie échouera toujours.
(since C++26)

Table des matières

Paramètres

ch - le caractère à stocker dans la zone de put

Valeur de retour

Traits :: not_eof ( ch ) pour indiquer le succès ou Traits :: eof ( ) pour indiquer un échec.

Notes

Si a_codecvt. always_noconv ( ) renvoie true , l'appel à a_codecvt. out ( ) peut être omis.

Exemple

Voir aussi

[virtual]
écrit des caractères dans la séquence de sortie associée depuis la zone de mise en mémoire tampon
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
[virtual]
lit depuis le fichier associé
(fonction membre protégée virtuelle)