Bloquer un flux de sortie ???

Signaler
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006
-
playmo420
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006
-
Salut
J'ai un petit probleme : je desire creer un objet permettant de gerer des flux de sortie. Voila un exemple, ca sera plus simple :

mon_objet<<"abcd"<<endl<<12345<<endl;
doit ecrire
abcd
12345

sur le flux precedemment defini dans l'objet (par exemple cout, ou un flux de fichier, ...).

Pour ca, y'a pas de probleme. Mais je voudrais aussi pouvoir bloquer ce flux. En clair, si une variable a une certaine valeur dans l'objet, le "mon_objet<<...." ne doit rien ecrire. Pour ce qui est directement a droite de l'objet, pas de probleme, mais je ne vois pas comment bloquer ce qui suit. Par exemple, pour le moment,

mon_objet<<"abcd"<<endl<<12345<<endl;
ecrit :

12345

alors qu'il ne devrait rien y avoir...

Quelqun a une idee pour realiser ca ?

5 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
bizar ce que tu ve faire, c++ permet une bonne gestion de ces flux

et tu a conscience que quand tu fait
mon_objet<<"abcd"<<endl<<12345<<endl;

12345 arrive sur un flux vide? c'est sensiblement different de
mon_objet<<"abcd\n"<<12345<<endl;

elle doit faire koi precisement ta classe?
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006

J'ai finalement reussi a faire ce que je voulais en surchargeant l'operateur << avec un template. Le seul probleme qui reste vient, comme tu l'as dit du endl. (pour l'instant je ne peux utiliser que des "/n" pour les passages a la ligne, ce qui est meilleur en terme de performance, mais bon...
Pour ce qui est de la classe, je suis en train de mettre au point une classe de tracage. Pour ceux qui ne connaissent pas, ca sert a simplifier la gestion des messages de log pour le debugging. Par exemple, au lieu de faire un

cout<<"variable xyz :"<<xyx<<endl;

on fait

traceur<<"variable xyz :"<<xyx<<"/n";

Sachant que traceur peut etre desactive et est gere grace a un systeme de niveaux de priorite des messages.

Je pense que ma classe sera bientot finie, et il ne me reste plus en fait qu'a gerer le probleme du endl. Si qqun a une idee... (surcharge de <<, du manipulateur, ...)
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
oui ca peut etre utile comme classe, mais pour les tracage ya aussi assert, mais apres tout si c'est plus partique...
c'est quoi le probleme avec endl?
et pourquoi tu ve utiliser ca a la place de '\n' ?
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006

En fait j'ai surcharge l'operateur << pour prendre un objet de ma classe a gauche et j'ai utilise un template pour la droite. Tous les types et manipulateurs passent nickel, sauf endl. (i.e je ne peux pas faire mon_objet<<...<<...<<endl;)
Pourquoi je veux utiliser ca avec endl ? Bah c'est sur que \n est meilleur que endl en terme de performances, ce qui est important pour le tracing, mais je voudrais faire un truc assez complet...
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006

Au fait j'ai mis une premiere version sur le site si vous voulez voir ce que ca donne pour le moment :

http://www.cppfrance.com/code.aspx?ID=22664