Hello tout le monde,
Ca fait un petit moment que je suis bloqué sur un problème de surcharge.
Mon but est de capter tout ce qui est écrit sur std::cout et de le rediriger vers un stream perso, en prenant soin d'ajouter la date à chaque fois qu'une nouvelle ligne est trouvée (ce stream est ensuite écrit dans un fichier).
Pour celà, je cherche dériver un stringbuf (ou streambuf) et surcharger la function int_type sputc ( char_type c ), qui est la fonction la plus basique qui écrit dans le stream. Ensuite je redéfinis le streambuf de std::cout avec mon streambuf personnalisé : cout.rdbuf(&mybuf);
Mon problème est que je n'arrive pas à faire en sorte que cout utilise ma fonction surchargée de sputc plutot que celle de base. Voici mon code :
Merci d'avance !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class LoggerStringbuf : public stringbuf { protected: int_type sputc(char_type _Ch) { cerr << "coucou\n"; return stringbuf::sputc(_Ch); } };
Partager