Bonjour,
Je cherche comment enregistrer une structure dans un fichier, de sorte que je puisse la reloader plus tard.
Prenons un exemple simple: j'ai une équipe de Pokémons:
Puis je déclare mes fonctions save_team et load_team comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 //contient toutes les infos sur l'équipe struct Team { //les infos des pokes struct Pokes { Pokes(); void reset(); unsigned int num:9; Uint16 moves[4]; char nick[12+1]; unsigned int item:9; unsigned int level:7; Uint8 hp_ev; Uint8 att_ev; Uint8 def_ev; Uint8 satt_ev; Uint8 sdef_ev; Uint8 speed_ev; unsigned int nature : 5; unsigned int hp_dv : 5; unsigned int att_dv : 5; unsigned int def_dv : 5; unsigned int satt_dv : 5; unsigned int sdef_dv : 5; unsigned int speed_dv : 5; unsigned int gender : 1; unsigned int shiney : 1; unsigned int ability: 1; }; Pokes pokes[6]; //celles du trainer char Trainer_Name[15+1]; char Trainer_Info[200+1]; char Trainer_Win[246+1]; char Trainer_Lose[246+1]; Team(); }; //gestionnaire de l'équipe class TeamBuilder { private: Team equipe; ... public: ... };
Le pire, c'est que ça marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void TeamBuilder::save_team() { ofstream out("team/team.pcb", ios::binary); out.write((char *)(void*)(&equipe), sizeof(Team)); } void TeamBuilder::load_team() { ifstream in("team/team.pcb", ios::binary); in.get((char *)(void*)(&equipe), sizeof(Team)); ... }
Enfin, jusqu'à présent ça marche, mais je voulais savoir s'il y avait des risques de corruption de mémoire, de segfault...
Parce que ça me paraît louche comme codage
Ou alors s'il y a une manière tout aussi simple de charger/sauver une structure?
Merci beaucoup!
Partager