OVH Cloud OVH Cloud

Enregistrer std::list dans un fichier

3 réponses
Avatar
matlerouge
Bonjour, j'ai une std::list<element>, avec element une structure qui
contient des std::string et std::map.

Y'a t'il un moyen simple d'enregistrer cette liste dans un fihchier ? Et
de la relire apres (j'avais pensé tout enregistrer en binaire, mais bon,
comme la liste est chainé avec des pointeur, j'ai peur que ca passe mal.

Y'a t'il une autre solution que tout enregistrer en mode text, et de
recrerer la liste, les map a chaque lecture du fichier ?

Merci

3 réponses

Avatar
Fabien LE LEZ
On Thu, 10 Mar 2005 19:19:28 +0100, matlerouge
:

Y'a t'il une autre solution que tout enregistrer en mode text, et de
recrerer la liste, les map a chaque lecture du fichier ?


Non. Mais tu peux te faire aider. Cherche les mots "sérialisation" ou
"serialization" dans Google (web + archives du forum).



--
;-)

Avatar
Jean-Sebastien Mouret
matlerouge writes:

Bonjour, j'ai une std::list<element>, avec element une structure qui
contient des std::string et std::map.

Y'a t'il un moyen simple d'enregistrer cette liste dans un fihchier ? Et
de la relire apres (j'avais pensé tout enregistrer en binaire, mais bon,
comme la liste est chainé avec des pointeur, j'ai peur que ca passe mal.


<pub>
Boost.Serialization
http://www.boost.org/libs/serialization/doc/index.html
</pub>


Y'a t'il une autre solution que tout enregistrer en mode text, et de
recrerer la liste, les map a chaque lecture du fichier ?


ton probleme est le meme que ce soit dumpe' en texte ou en binaire.


--
js

Avatar
kanze
matlerouge wrote:

Bonjour, j'ai une std::list<element>, avec element une
structure qui contient des std::string et std::map.

Y'a t'il un moyen simple d'enregistrer cette liste dans un
fihchier ?


Ça dépend de ta définition de « simple ». Conceptuellement,
c'est ultra simple, mais il faut un peu de code, quand même.

Et de la relire apres (j'avais pensé tout enregistrer en
binaire, mais bon, comme la liste est chainé avec des
pointeur, j'ai peur que ca passe mal.


Tu peux formatter en binaire comme tu peux formatter en texte.
Les fonctions de formattage de texte ont l'avantage d'exister
déjà, mais elles n'assure pas l'aller-retour en ce qui concerne
std::string. (C-à-d que si tu écris la chaîne avec <<, tu n'es
pas garanti de pouvoir le rélire correctement avec >>. C'est un
peu le cas de tous les types, dans la mésure que << n'insère pas
de séparateur, mais le cas des chaînes est particulièrement
flagrant.)

Y'a t'il une autre solution que tout enregistrer en mode text,
et de recrerer la liste, les map a chaque lecture du fichier ?


Il faudrait de toute façon récréer les données quand on les
rélit. Quelque soit le format choisi.

AMHA, la première chose à faire est de définir un format. De
préférence texte, parce que c'est plus facile à débugger (de
loin). Le choix d'un format pourrait dépendre de ce que
représent ces chaînes, et de ce que le map contient ; il est
beaucoup plus facile à définir un format où les chaînes
n'utilisent qu'un sous-ensemble des caractères disponibles, où
qu'elles ont une longueur fixe, par exemple.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34