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

  FORUM HardWare.fr
  Programmation
  C++

  eregistrer une structure en C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

eregistrer une structure en C++

n°270063
weblook$
happy face
Posté le 15-12-2002 à 19:19:44  profilanswer
 

je voudrais pouvoir enregistrer dans un ficheir une structure et ceci en C++.
je n'y arrive pas avec l'opérateur << de la class ofstream.Comment faire?
 
 

mood
Publicité
Posté le 15-12-2002 à 19:19:44  profilanswer
 

n°270064
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-12-2002 à 19:26:45  profilanswer
 

redefinir l'operateur <<


---------------
du bon usage de rand [C] / [C++]
n°270065
kjus
Posté le 15-12-2002 à 19:35:48  profilanswer
 

tu peux faire un truc bourrin mais qui marche bien :

Code :
  1. fichier.write( reinterpret_cast<const char*>(&ta_struct), sizeof(ta_struct));


et pour relire :

Code :
  1. fichier.read( reinterpret_cast<char*>(&ta_struct), sizeof(ta_struct));


Message édité par kjus le 15-12-2002 à 19:36:58
n°270067
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-12-2002 à 19:37:50  profilanswer
 

kjus a écrit :

tu peux faire un truc bourrin mais qui marche bien :
 
fichier.write( reinterpret_cast<const char*>(&ta_struct), sizeof(ta_struct));
 
et pour relire :
 
fichier.read( reinterpret_cast<char*>(&ta_struct), sizeof(ta_struct));

et si tu as autre chose que des types de bases, tu peux te brosser :pfff:. tout en sachant que ce n'est pas portable.


---------------
du bon usage de rand [C] / [C++]
n°270101
kjus
Posté le 15-12-2002 à 21:36:24  profilanswer
 

bien sur ce n'est pas une solution idéal, mais si weblook demande ca je pense qu'il ne connait pas la surcharge des opérateurs...

n°270103
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-12-2002 à 21:38:32  profilanswer
 

ouais mais bon, le reinterpret_cast<char*> c'est pas ça qui va t'afficher la chaine pointée par une char*


---------------
du bon usage de rand [C] / [C++]
n°270151
Musaran
Cerveaulté
Posté le 16-12-2002 à 05:03:29  profilanswer
 

Comme ça pour écrire en "mettant en forme":

Code :
  1. struct machin{
  2. int a,b;
  3. friend fstream& operator<<(fstream&, const machin&);
  4. };
  5. fstream& operator<<(fstream& fs, const machin& m){return fs << "{" << m.a << "," << m.b << "}"; }


 
Comme kjus propose pour une écriture brute.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°270161
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 16-12-2002 à 08:09:50  profilanswer
 

je rappelle que l'ecriture d'un caractère c'est 'c' et pas "c"


---------------
du bon usage de rand [C] / [C++]
n°270202
weblook$
happy face
Posté le 16-12-2002 à 10:22:00  profilanswer
 

y a pas une syntaxe toute conne qui permet d'écrire la structure en un seul coup, un peu à l'instar du c:  [fwrite(&ma_struct,...) ]?

n°270303
kenshiro18​2
Posté le 16-12-2002 à 12:03:31  profilanswer
 

Taz@PPC a écrit :

et si tu as autre chose que des types de bases, tu peux te brosser :pfff:. tout en sachant que ce n'est pas portable.


oui mais bon la portabilite ca existe pas vraiment au niveau des fichiers. Il suffit que tu ais une machine en ASCII et une en EBCDIC pour que les fichiers textes soient pas portables...

mood
Publicité
Posté le 16-12-2002 à 12:03:31  profilanswer
 

n°270312
antp
Super Administrateur
Champion des excuses bidons
Posté le 16-12-2002 à 12:11:40  profilanswer
 

Taz@PPC a écrit :

je rappelle que l'ecriture d'un caractère c'est 'c' et pas "c"


 
Le stream prévoit le type char ? pcq j'ai déjà eu la blague avec les AnsiString de C++Builder (oui je sais c'est moins bien que le type string, mais pour utiliser la VCL c'est plus pratique) : il prévoit int et char * mais pas char.
Donc si tu utilises des char il prend ça comme des int, et tu te retrouves avec le code ASCII de ton caractère dans ta chaîne à la place du caractère lui-même :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°270313
antp
Super Administrateur
Champion des excuses bidons
Posté le 16-12-2002 à 12:12:35  profilanswer
 

weblook$ a écrit :

y a pas une syntaxe toute conne qui permet d'écrire la structure en un seul coup, un peu à l'instar du c:  [fwrite(&ma_struct,...) ]?


 
Si, c'est ce que t'as donné kjus, mais faut faire gaffe avec ça, ça dépend de ce que t'as dans ta structure...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°271110
Musaran
Cerveaulté
Posté le 17-12-2002 à 06:08:40  profilanswer
 

Taz@PPC a écrit :

je rappelle que l'ecriture d'un caractère c'est 'c' et pas "c"


J'ai failli.
Des restes de mon infection VB sans doute.
Aussi, un cerveau ça marche moins bien à 5h du matin...
 
 
Bon, je pense que weblook$ veut ça:

Code :
  1. template <typename F, typename S>
  2. void rawwrite(F fichier, S& structure){
  3. fichier.write( reinterpret_cast<const char*>(&structure), sizeof(S));
  4. }
  5. rawwrite(monfichier, monobjet);


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°272375
weblook$
happy face
Posté le 18-12-2002 à 20:22:02  profilanswer
 

Musaran a écrit :


J'ai failli.
Des restes de mon infection VB sans doute.
Aussi, un cerveau ça marche moins bien à 5h du matin...
 
 
Bon, je pense que weblook$ veut ça:

Code :
  1. template <typename F, typename S>
  2. void rawwrite(F fichier, S& structure){
  3. fichier.write( reinterpret_cast<const char*>(&structure), sizeof(S));
  4. }
  5. rawwrite(monfichier, monobjet);




impeccable, thanks


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

  eregistrer une structure en C++

 

Sujets relatifs
[C] fonction et retour de structure | tomik recentré sur le rand()pb de taille de structure
structure d'une base de donnés sql pour un forum et fonctions innovant[C] probleme de structure
structure de donneePeut-on initialiser les champs d'une structure?
recherche des informations sur la structure physique des fichiers TIFsProbleme avec la structure FILE
[C++] Ya moyen de sauvegarder d'un seul coup une structure ds un .INI?[java] equivalent d'un tableau de structure mais en java.
Plus de sujets relatifs à : eregistrer une structure en C++


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