Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1780 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [flux] créer un flux nul ou un flux fictif

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[flux] créer un flux nul ou un flux fictif

n°892644
suizokukan
Posté le 07-11-2004 à 19:34:27  profilanswer
 

Bonsoir à tous et d'avance, désolé pour la longueur de ce post !
 
  J'écris en ce moment une surcouche aux flux standards du C++ pour gérer l'UNICODE et un format personnel ('infotexte'). La classe infotexte peut s'utiliser pour la lecture seule ou pour la lecture et l'écriture.
 


                        Voici ma hiérarchie de classes :
                 
 (couche système)      istream       ostream
                          .            .
 (ma couche unicode)   flux_in      flux_out
                          .            .
                          ..............
                                 .
 (ma couche infotexte)       infotexte
 


 
  Le problème apparaît avec les constructeurs prévus pour la lecture seule (j'ai donc supprimé les autres constructeurs et beaucoup simplifié le code). Dans ce cas flux_out ne me sert à rien et j'ai donc créé un constructeur-bidon... Mais comment initialiser ostream ?
 

Code :
  1. // Classes de bases pour gérer l'UNICODE :
  2.     class flux_in : public istream
  3.     {
  4.           flux_in(const char* fic_in);
  5.     };
  6.     flux_in::flux_in(const char* fic_in) : istream(0)
  7.     { // [...] Initialisation de l'istream à partir du fichier  
  8.       // je termine par un  
  9.       ios::init(&ficbuff_in);
  10.     }
  11.     class flux_out : public ostream
  12.     {
  13.           flux_out(void); // Mon constructeur bidon.
  14.           // flux_out(const char* fic_out) // Autre constructeur.
  15.     };
  16.     flux_out::flux_out(void) : ostream(0) // ????????????????????<= Problème (?)
  17.     { // Pas d'initialisation pour ce constructeur.
  18.     }
  19.     // Classe INFOTEXTE pour gérer les textes selon un format de mon cru  
  20.     class infotexte : public flux_in, public flux_out
  21.     {
  22.           // Ouverture d'un fichier pour la lecture seulement
  23.           infotexte(const char * fic);
  24.     };
  25.     infotexte::infotexte(const char * fic) : flux_in(fic), flux_out()
  26.     {}


 
    Quand je crée une instance de classe infotexte pour la lecture seule, le constructeur de flux_in est d'abord appelé et il ouvre correctement le fichier passé en argument. Puis le constructeur-bidon flux_out est appelé et ne fait rien. Mais quand le constructeur infotexte reprend la main, je me rend compte que mon flux d'entrée est fichu (rdstate() me renvoie badbit).
   Je crois que c'est le fait d'appeler ostream(0) comme je le fais qui provoque une erreur. Si vous aviez une solution pour diriger ce flux vers un flux nul sans créer d'erreurs, merci beaucoup.


Message édité par suizokukan le 07-11-2004 à 19:38:57
mood
Publicité
Posté le 07-11-2004 à 19:34:27  profilanswer
 

n°892834
suizokukan
Posté le 07-11-2004 à 22:52:57  profilanswer
 

Voici une adresse à laquelle une réponse a déjà été donnée (en anglais) :
 
 http://coding.derkeiler.com/Archiv [...] /1049.html  
 
  Merci à tous ceux qui ont lu mon poste !


Message édité par suizokukan le 07-11-2004 à 22:53:44

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [flux] créer un flux nul ou un flux fictif

 

Sujets relatifs
Site que je vient de creercomment creer une categorie dans mysql?
Creer une toolbar personnalisée avec MFCCreer un outil de mise à jour
Comment créer un flux RSS ?creer des pdf en java
creer un document .pdfBAT : créer un fichier avec comme nom la date du jour
Comment creer des screensavers 
Plus de sujets relatifs à : [flux] créer un flux nul ou un flux fictif


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR