IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

[iostream] Surcharge d'un streambuf pour cout


Sujet :

SL & STL C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut [iostream] Surcharge d'un streambuf pour cout
    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 :

    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);
    		}
     
    	};
    Merci d'avance !!!

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    De mémoire ce n'est pas sputc() qu'il faut surcharger mais overflow(). Tu trouvera plus d'info ici http://kanze.james.neuf.fr/articles/fltrsbf1.html.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Super, merci Sylvain.
    Je n'ai pas le temps de jeter un oeil à ça dans l'immédiat, mais ça m'a tout l'air d'être la solution. Dès que j'ai testé et approuvé je reposte avec ma solution
    Thanks a lot !
    nutzzz

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Excellent, le lien que tu m'as donné ne me donnait pas vraiment la solution directement, mais m'a mis sur la piste. Du coup je suis tombé là dessus http://www.devmaster.net/forums/showthread.php?t=7037, qui est exactement ce que je cherchais.

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Surcharge de l'opérateur / pour les entiers très grands
    Par marbouchi dans le forum Débuter
    Réponses: 5
    Dernier message: 04/05/2009, 21h28
  2. Réponses: 13
    Dernier message: 13/01/2007, 12h46
  3. Déclarer une variable pour remplacer cout
    Par alvun dans le forum SL & STL
    Réponses: 11
    Dernier message: 29/06/2006, 10h29
  4. [debutant] warning pour iostream
    Par ameliepim dans le forum SL & STL
    Réponses: 17
    Dernier message: 07/06/2006, 21h24
  5. [TListColumn] Comment le surcharger notemment pour l'IDE ?
    Par phplive dans le forum Composants VCL
    Réponses: 14
    Dernier message: 25/05/2005, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo