C++ (Visual) et <fstream> bug? ou pas

C++ (Visual) et <fstream> bug? ou pas - Programmation

Marsh Posté le 02-04-2001 à 14:10:50    

Il y quelque chose qui me chiffonne avec Visual C++ :
je crée un ofstream, puis j'appelle les fonctions setmode et setbuf. L'IDE me propose ces fonctions dans la liste de choix temps réel qui défile à chaque fois que l'on tape un . ou une -> après une instance de classe.
#include <fstream>
using namespace std;
...
ofstream out;
out.setbuf(NULL);
out.setmode(filebuf::binary)
...
 
et le compilo me dit que basic_ofstream<char_traits.....
en gros le typedef d'ofstream
n'a pas setbuf ni setmode en tant que membre
et que filebuf n'a pas binary en tant que membre.
 
La doc dit que ofstream a ces membres, mais demande <fstream.h>
la définition de ofstream dans <fstream> tout court est un typedef de spécialisation de basic_ofstream et ne contient pas ces opérateurs. J'aimerais savoir si ceux qui utilisent d'autres  
compilos ont cette erreur (auquel cas on doit en déduire une différence entre <fstream> et <fstream.h> autre que le namespace.
 
Je ne peux pas me permettre décemment d'utiliser la version .h car elle est inconsistante avec notre convention de codage, et me demanderait de modifier à peu près tous les include qui sont en en-tête de mon fichier et que je partage avec d'autes programmes et d'autres personnes.

Reply

Marsh Posté le 02-04-2001 à 14:10:50   

Reply

Marsh Posté le 02-04-2001 à 15:08:45    

Teste avec GCC sous Linux (Suse 7.1).
La fonction setbuf prend deux parametres :
* void fstreambase::setbuf(char *, int);
De meme il ne connait pas filebuf::binary.
 
Va falloir se resigner a utiliser :
out.open("MailMoiTonRibStp.now", ios::binary);
out.setbuf(NULL,0);
 
a+

Reply

Marsh Posté le 03-04-2001 à 02:39:19    

Dans la classe ofstream, il y a un membre prive fb de type filebuf. Et la classe filebuf a une methode setbuf.
 
Bon, je sais, la doc Microsoft definit une methode setbuf dans la classe ofstream, mais je suis pas sur que ca soit dans la norme (je n'ai que le draft de la norme).
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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