Fread VS sstream >>

Résolu
xabila Messages postés 28 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 2 septembre 2005 - 16 févr. 2005 à 20:14
xabila Messages postés 28 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 2 septembre 2005 - 17 févr. 2005 à 18:28
Bonjour,

Voilà je voudrais convertir ces deux lignes :



fread(moncharStar, sizeof(char), 10, file);

fread(monInt, 1, sizeof(int), file);



avec des stream C++. donc j'ai fait



for(int i = 0;i<10 ; i++)
file >> moncharStar[i] ;

file >> monInt;



Mais ca correspond pas.

Donc ma question comme ce que je récupere est dans un fichier binaire
, est ce que le fread ferait le saut à la ligne tout seul?

Voilà merci

5 réponses

xabila Messages postés 28 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 2 septembre 2005
17 févr. 2005 à 18:28
ok c'est cool ca marche parfait !
3
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
16 févr. 2005 à 21:42
il faut l'ouvrir en binaire et utiliser la méthode read()



#include

#include <fstream>



namespace

{

// une fonction générique pour simplifier l'écriture

template< typename TYPE >

inline std::istream& read( std::istream &file, TYPE &s )

{

return file.read( reinterpret_cast<char *>(&s), sizeof s );

}



}



using namespace std;



int main()

{



ifstream file( ios::binary );

if( !file )

return 1;

int n;

read( file, n );



}
0
xabila Messages postés 28 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 2 septembre 2005
17 févr. 2005 à 09:52
3 points.



1) MERCI ;)



2) moi je lis un fichier donc je fais plutot ifstream file(filename),
donc je sais pas trop ou préciser que je vais faire du binary.( a moins
qu'il y ait un setFile dans ifstream (je vais regarder)



3) pourquoi ce cast<char *> mais c'est peut etre ce qui permet de passer du binaire à l'ascii en fait
0
xabila Messages postés 28 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 2 septembre 2005
17 févr. 2005 à 09:59
ok donc pour la 2) c'est bien

ifstream file (filename,ios::binary)



Ca c'est fait ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
17 févr. 2005 à 18:23
oui désolé j'ai oublié de préciser le nom du fichier dans le constructeur

ca doit etre ca



la méthode read attend un char * (pointeur sur le buffer qui contiendra
les données lues). Donc en c++ si tu lui passes tout cru l'adresse de
ton int, le compilateur ne va pas aimer à cause de la force du typage
(en C ca serais passer si la fonction attendais un void*). le
reinterpret_cast s'impose.
0
Rejoignez-nous