Bibliothèque C ++ IOS - Inscription de rappel

La description

Il est utilisé pour enregistrer la fonction de rappel d'événement. Enregistre fn en tant que fonction de rappel à appeler automatiquement avec index comme argument lorsqu'un événement de flux se produit.

Si plus d'une fonction de rappel est enregistrée, elles sont toutes appelées, dans l'ordre inverse d'enregistrement.

La fonction de rappel doit être d'un type convertible en event_callback. Et il est appelé par une expression équivalente à celle illustrée ci-dessous -

void register_callback (event_callback fn, int index);

Déclaration

Voici la déclaration de la fonction ios_base :: register_callback.

void*& pword (int idx);

Paramètres

fn - Pointeur vers la fonction à appeler.

index - Valeur entière passée en paramètre à la fonction de rappel.

Valeur de retour

aucun

Exceptions

Basic guarantee - si une exception est levée, le flux est dans un état valide.

Courses de données

Il modifie l'objet de flux.

Exemple

L'exemple ci-dessous explique la fonction ios_base :: register_callback.

#include <iostream>     
#include <fstream>      

void testfn (std::ios::event ev, std::ios_base& stream, int index) {
   switch (ev){
      case stream.copyfmt_event:
         std::cout << "copyfmt_event\n"; break;
      case stream.imbue_event:
         std::cout << "imbue_event\n"; break;
      case stream.erase_event:
         std::cout << "erase_event\n"; break;
   }
}

int main () {
   std::ofstream filestr;
   filestr.register_callback (testfn,0);
   filestr.imbue (std::cout.getloc());
   return 0;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

imbue_event
erase_event