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

  FORUM HardWare.fr
  Programmation

  [c++] Probleme avec fstream...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] Probleme avec fstream...

n°21944
tgrx
My heart is pumping for love
Posté le 03-04-2001 à 10:42:26  profilanswer
 

Bonjour a tous,
 
Mon compilateur (GCC) ecrit par defaut les int sous forme ASCII dans les streams.
 
ex :
ofstream f("test.dat", ios::binary);
f << (int) 456;
 
et donc dans le fichier j'ai la chaine "456". Tout a fait normal. Seulement moi j'aimerais bien qu'il les stocke sous forme binaire, 4 octets par int, comme ca ca facilite la relecture.
 
J'ai donc ecrit la fonction suivante (censee surchargee la fonction existante) :
 
ostream& operator << (ostream& out, const int & i)
{
  out.write((char*) &i, sizeof(int));
  return out;
}
 
Qui est censee fonctionner. Mais bizarrement le compilo s'en fout et utilise la fonction standard, et continue a ecrire en ASCII dans le fichier. Ou est la connerie ? :sarcastic:

mood
Publicité
Posté le 03-04-2001 à 10:42:26  profilanswer
 

n°21986
tgrx
My heart is pumping for love
Posté le 03-04-2001 à 12:35:48  profilanswer
 

Please help !

n°22033
janoscoder
Posté le 03-04-2001 à 14:56:38  profilanswer
 

t'as essayé de faire par la suite un
f.setmode(filebuf::binary) ?
par la suite?
ptet que ça marche

n°22037
Toxin
Carpe ★★ Vitam
Posté le 03-04-2001 à 15:13:39  profilanswer
 

Un cast de (char *) sur un integer ? Ca ne marchera jamais ça.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
n°22040
tgrx
My heart is pumping for love
Posté le 03-04-2001 à 15:16:15  profilanswer
 

ben faut bien forcer les choses non ? tu vois une autre maniere ??
 
janoscoder > MAILMOITONRIBSTP

n°22057
janoscoder
Posté le 03-04-2001 à 16:25:30  profilanswer
 

->toxin
en mode binary, typecaster un pointeur d'entier en pointeur d'octets marche. (et ce même avec des endians différents).

n°1604697
du83
Posté le 27-08-2007 à 18:27:24  profilanswer
 

Voilà une solution que j'utilise et qui marche au poil !
 
int A_Ecrire_dans_le_fichier;
char Sert_seulement_pour_L_adresse;
 
int main(int argc, char *argv[])
{
        A_Ecrire_dans_le_fichier=456;
        ofstream fichier;
        fichier.open ("test.dat", ios::binary);
        fichier.write (&Sert_seulement_pour_L_adresse - sizeof(A_Ecrire_dans_le_fichier), sizeof(A_Ecrire_dans_le_fichier));
        fichier.close ();
        return 0;
}
 
C'est tiré par les cheveux mais ça marche !

n°1604806
Taz
bisounours-codeur
Posté le 28-08-2007 à 07:28:15  profilanswer
 

dégueux
 

Code :
  1. [07:26:03][pts/5][/tmp][#7][&1] ? 1
  2. benoit@ibook >>> cat write.cpp
  3. #include <fstream>
  4. #include <cstring>
  5. int main()
  6. {
  7.   std::ofstream out("out", std::ios::binary);
  8.   int i = 456;
  9.   char buffer[sizeof i];
  10.   std::memcpy(buffer, &i, sizeof i);
  11.   out.write(buffer, sizeof i);
  12. }
  13. [07:27:24][pts/5][/tmp][#8][&1]
  14. benoit@ibook >>> g++ -Wall -std=c++98 write.cpp
  15. [07:27:30][pts/5][/tmp][#9][&1]
  16. benoit@ibook >>> ./a.out && hexdump -C out
  17. 00000000  00 00 01 c8                                       |....|
  18. 00000004

n°1604827
Taz
bisounours-codeur
Posté le 28-08-2007 à 09:01:39  profilanswer
 

on peut biensur faire directement avec un reinterpret_cast<char*>(&i);


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

  [c++] Probleme avec fstream...

 

Sujets relatifs
probleme avec visaul interdev[JAVASCRIPT] Problème sans doute très simple... mais je trouve pas !
[php3-Free] problème d'include qui marche malProblème avec les images réactives en Javascript
prouver que vous etes capable de resoudre un probleme tout bêteProbleme de fond ...
[flash 5] problème de loadmovieProbleme de requete Perl sur serveur local (Newbie inside )
Problème de rechargement automatique de la page !problème carte xircom pcmcia sous linux ? qqun peut m'aider
Plus de sujets relatifs à : [c++] Probleme avec fstream...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)