Partager via


basic_streambuf::overflow

Une fonction virtuelle protégée qui peut être appelée lorsqu'un nouveau type est inséré dans une mémoire tampon saturée.

virtual int_type overflow( 
   int_type _Meta = traits_type::eof( ) 
);

Paramètres

  • _Meta
    Caractère à insérer dans la mémoire tampon, ou traits_type::EOF.

Valeur de retour

Si la fonction ne peut pas réussir, elle retourne traits_type::eof ou lève une exception. Sinon, retourne traits_type::not_eof(_Meta). Le comportement par défaut consiste à retourner traits_type::eof.

Notes

Si le _Meta ne compare pas égale à traits_type::eof, la fonction membre virtuelle protégée essaie d'insérer l'élément traits_type::to_char_type(_Meta) dans le flux de sortie. Il peut le faire dans différentes manières :

  • Si write position est disponible, il peut enregistrer l'élément dans la position d'écriture au paramètre le prochain pointeur du tampon de sortie.

  • Elle peut rendre la position d'écriture disponible en allouant nouveau ou stockage supplémentaire pour le tampon de sortie.

  • Il peut rendre la position d'écriture disponible en écriture, une certaine destination externe, certaines ou à tous les éléments entre le début et les pointeurs prochain du tampon de sortie.

La fonction virtuelle de dépassement de capacité, ainsi que les fonctions d'synchronisation et d'dépassement de précision, définit les caractéristiques de la classe streambuf-dérivée. Chaque classe dérivée peut implémenter le débordement différemment, mais l'interface que la classe appelant de flux de données est identique.

La fonction d'overflow le plus souvent est appelée par les fonctions publiques d'streambuf comme sputc et sputn lorsque l'option de mise est complète, mais d'autres classes, notamment les classes de flux de données, peuvent appeler overflow à tout moment.

La fonction consomme des caractères dans la zone mise entre pbase et les pointeurs d'pptr puis réinitialise la zone de. La fonction d'overflow doit également utiliser nCh (si nCh n'est pas EOF), ou elle peut choisir de mettre ce caractère dans la zone nouvelle mise de sorte qu'il soit consommé lors de l'appel suivant.

La définition de consomment varie entre les classes dérivées. Par exemple, la classe d'filebuf écrit les caractères dans un fichier, tandis que la classe d'strstreambuf les conserver dans la mémoire tampon et (si la mémoire tampon est désignée comme dynamique) augmente la mémoire tampon en réponse à un appel de déborder. Cette expansion est effectuée en libérer la mémoire tampon ancienne et en remplaçant par la nouvelle, plus grande. Les pointeurs sont ajustés selon les besoins.

Configuration requise

**En-tête :**streambuf <de >

Espace de noms : std

Voir aussi

Référence

basic_streambuf, classe

iostream, programmation

iostreams, conventions