Stream poubelle

Stream poubelle - C++ - Programmation

Marsh Posté le 15-07-2003 à 19:44:41    

Pour une raison à la con, il me serait pratique d'avoir à dispo un objet de type ostream qui écrit dans le vide (comme un ofstream ouvert sur /dev/null sur un linux).
 
Mais j'ai besoin que ça marche sous windows et j'aurai aussi aimé trouvé une solution "full lib std c++", sans écrire une classe héritant de ostream.
(J'aurai bien instancié un "stream tout court", mais c'est impossible car c'est sans doute une interface avec des méthodes virtuelles pures  :sweat: )
 
Pour l'instant j'ai pas trouvé... si qq à une idéé, je suis preneur.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 15-07-2003 à 19:44:41   

Reply

Marsh Posté le 15-07-2003 à 20:14:39    

je crois que ta raison est vraiment à la con... mais alors vraiment. tu veux pas expliquer ton problème avant qu'on se lance dans du codage à la con (solution simple: un stringstream et tu purge à chaque fois. mais ça fait quand meme les opérations d'ecritures pour rien)

Reply

Marsh Posté le 15-07-2003 à 20:17:59    

Sous Windows l'équivalent de "/dev/null" est "nul", mais je sais pas si on peut l'ouvrir


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-07-2003 à 20:39:11    

++Taz a écrit :

je crois que ta raison est vraiment à la con... mais alors vraiment. tu veux pas expliquer ton problème avant qu'on se lance dans du codage à la con (solution simple: un stringstream et tu purge à chaque fois. mais ça fait quand meme les opérations d'ecritures pour rien)


 
La raison n'est pas si débile en réalité.
Il y a qq temps, j'ai développé un composant c++ assez complexe, destiné à traiter un flux de données en temps réel. Il travaille sur un ostream, ce qui permet d'adapter la sortie des données en changeant de classe d'ostream.
 
Or il est apparut un interet à utiliser ce composant sans retransmettre de données. D'ou l'idée d'utiliser un ostream poubelle "efficace" (au lieu de foutre des if(poubelleOn==true) devant chaque accès au stream).


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 15-07-2003 à 20:41:23    

antp a écrit :

Sous Windows l'équivalent de "/dev/null" est "nul", mais je sais pas si on peut l'ouvrir


 
j'essaierai ça, mais je ne pense pas que ça fasse un stream poubelle "efficace" de toute façon  :o


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 15-07-2003 à 21:05:39    

ben le problème, c'est que c'est plus efficace que faire un test, plutot que de faire un appel de fonction, fonction qui ecrira dans une zone vouée à être perdu. mais je comprends pas trop ton truc: tu veux désactiver toutes les ecritures, ou bien conservé les appels et les executés, mais que ça ne s'ecrive nulle part?

Reply

Marsh Posté le 15-07-2003 à 21:39:12    

++Taz a écrit :

ben le problème, c'est que c'est plus efficace que faire un test, plutot que de faire un appel de fonction, fonction qui ecrira dans une zone vouée à être perdu. mais je comprends pas trop ton truc: tu veux désactiver toutes les ecritures, ou bien conservé les appels et les executés, mais que ça ne s'ecrive nulle part?


 
Dans l'idéal il me faut une classe héritant de ostream dont les méthodes (opérateurs << en particulier) ne font rien à part "retourner".  
 
Seulement comme je suis feignant je me demandait si ça n'existait pas déjà dans la lib std c++, à quelque ruse près.


Message édité par schnapsmann le 15-07-2003 à 21:39:45

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 15-07-2003 à 21:43:05    

ben c'est nul comme solution quand meme, c'est pas élégant du tout et ça va te poser des problèmes: ne pas ecrire dans un fichier, c'est une chose, mais remplacer la sémantique et ecrire des instructions qui ne font rien, ça c'est moche. t'as tellement de données que ça à ecrire? sinon un ficheir temporaire et on en parle plus. ça t'apprendra à mélanger traitement et E/S ... la question est: est ce que tu as acces au code source de ton module?

Reply

Marsh Posté le 15-07-2003 à 22:21:20    

++Taz a écrit :

ben c'est nul comme solution quand meme, c'est pas élégant du tout et ça va te poser des problèmes: ne pas ecrire dans un fichier, c'est une chose, mais remplacer la sémantique et ecrire des instructions qui ne font rien, ça c'est moche. t'as tellement de données que ça à ecrire? sinon un ficheir temporaire et on en parle plus. ça t'apprendra à mélanger traitement et E/S ... la question est: est ce que tu as acces au code source de ton module?


 
J'ai accès au code, mais comme il est assez conséquent je vais me la jouer feignant. Je vais donc utiliser cette approche qui est moins moche au stade au j'en suis, car faire
 

Code :
  1. ostream& operator<<(const blob& _truc) { return *this; }

 
c'est quasi aussi rapide que de faire ça (à l'appel de fonction près)

Code :
  1. if(enableFeed==true) { output << aBlob; }


à plein d'endroit dans le code de ce module.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 15-07-2003 à 22:51:54    

pourtant le test c'est mieux, ou alors fait quelque chose avec macro / meta-prog template si tu veux quelque chose qui fasse ce qu'il faut au moment de la compilation

Reply

Marsh Posté le 15-07-2003 à 22:51:54   

Reply

Marsh Posté le 15-07-2003 à 22:57:58    

++Taz a écrit :

pourtant le test c'est mieux, ou alors fait quelque chose avec macro / meta-prog template si tu veux quelque chose qui fasse ce qu'il faut au moment de la compilation


 
merci de ta contrib  :hello:


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 15-07-2003 à 23:22:03    

enableFeed==true
 
en fait à la base on a introduit le type booléen d'écrire ce genre de truc. y a pas d'histoire de lisibilité qui tienne, faut juste retourner à l'école pour faire un peu d'algèbre de Boole :D

Reply

Marsh Posté le 16-07-2003 à 08:23:37    

++Taz a écrit :

enableFeed==true
 
en fait à la base on a introduit le type booléen d'écrire ce genre de truc. y a pas d'histoire de lisibilité qui tienne, faut juste retourner à l'école pour faire un peu d'algèbre de Boole :D  


 
bien sur, j'attends que tu me donnes des cours  [:power600]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed