Bonjour à tous,
J'aimerais enregistrer une classe contenant des std::string dans un fichier binaire (et bien sur, j'aimerais la charger ultérieurement).
Pour cela j'ouvre mon fichier en mode std::ios::binary et j'utilise les méthodes write() et read() des classes fstream, ifstream et ofstream (ex : write(char*)(&ma_classe), sizeof(ma_classe)).
Le problème c'est que tous les types qui utilisent des pointeurs (dans le cas des std::string un char*) pour allouer de la mémoire dynamiquement (c'est valable aussi pour tous les conteneurs de la STL) n'enregistrent pas ce que leurs pointeurs pointent et c'est justement ce dont j'ai besoin.
Dans mon cas je ne veux enregistrer que des string, des int et des bool (pas de problème pour ces deux derniers types).
J'aimerais donc savoir si quelqu'un à trouvé une méthode efficace pour enregistrer une instance d'un objet contenant des std::string.
J'avais pensé à un truc du genre :
Le problème c'est qu'il est interdit décrire "char sc[c.size()]"!
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 struct ma_classe { int a; bool b; std::string c; struct save { int sa; bool sb; char sc[???]; }; };
Merci d'avance de votre aide!
Spartan03
Partager