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