Stream poubelle - C++ - Programmation
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)
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
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).
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
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?
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.
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?
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 :
|
c'est quasi aussi rapide que de faire ça (à l'appel de fonction près)
Code :
|
à plein d'endroit dans le code de ce module.
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
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
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
Marsh Posté le 16-07-2003 à 08:23:37
++Taz a écrit : enableFeed==true |
bien sur, j'attends que tu me donnes des cours
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 )
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!"