Copier map dans un fichier [Résolu]

Signaler
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
1 décembre 2010
-
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
-
bonjour,
j'ai une map avec une clé qui est une classe "personne" et puis un attribut qui est l'email
map
la classe personne contient un nom, prenom et moyenne
je voudrais sauvegarder ma map dans un fichier
comment faire?
merci

18 réponses

Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
1 décembre 2010

et voila j'ai trouvé la solution ;)

for ( i=M.begin() ; i != M.end(); i++ )

f<<(i->first).get_nom()<<" "<<(i->first).get_prenom()<<" "<<(i->first).get_moyenne()<<" "<second<<endl;


merci pour ton aide commemem
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
Yop,
Iln'y a rien de magique, malheureusement.
Tu dois parcourir ta map et écrire toi-même les couples clé/valeur que tu veux sauvegarder

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
1 décembre 2010

bah deja essayé mé j retg=rouv tjr un fichier vid
voici la fonction dans main:
avec personne p;
M c la map
case 7:
{
cout << "Nom du fichier dans lequel sauvegarder: ";
cin >> n;
ofstream f(n.c_str(),ios::out | ios::app);
if (f){
for ( i=M.begin() ; i != M.end(); i++ ){
p=i->first;
f<<p.get_nom()<<" "<<p.get_prenom()<<" "<<p.get_moyenne()<<" "<<endl;

f.close();}
}
break;
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
Et en debug, ça donne quoi?
que contient n?
est-ce que f est bon?
ta map contient-elle des données?
p a-t-il les bonnes valeurs?


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
1 décembre 2010

n c le nom du fichier.
il le crée correctement mé il é vide.
oui,ma map contient des données .
mais pour le reste apparement, il ne sauvegarde rien
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
J'ai bien compris.
Je te demandais de tester ton prog en debug, avec point d'arrêt, pour voir:
- d'une, s'il passe bien dans ta boucle for
- de deux, si p contient des valeurs correctes

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
Attends, je viens de remarquer un truc:
ton f.close() est dans ta boucle for? Il faut le sortir de là...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
1 décembre 2010

j c pa utiliser le debug mé g fé un ptit cout<<"ici"
juste quand on entre dans la boucle for et il ne l'affiche pas dc je pens qu'il n entre pa carrémen dan la boucle :S
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
Donc soit f n'est pas bon, soit ta map est vide
(bien sûr, je pars du principe que tes variables sont bien créées et initialisées: i, M,...)

Essaie plutôt ceci pour ouvrir ton fichier
ofstream f;
f.open(n.c_str());

Je te conseille vivement de passer par le debugger pour voir le souci. Tu utilises Visual Studio?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
1 décembre 2010

nn j'utilise DEV-C++!!
pour la création et l'ouverture du fichier ya pa de problème.
et j'ai bien verifie que ma map est remplie
j c pa d ou ca vient
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
Voici un tuto pour Dev-C++. Le debug est expliqué au point 6.
N'ayant rien sous la main pour tester, je ne vais pas pouvoir t'aider si tu ne m'indiques pas les infos obtenues en debug...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
et j'ai bien verifie que ma map est remplie

-> Comment fais-tu si tu n'utilises pas le debugger?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
1 décembre 2010

merci pour le tuto,
j'ai essayé avec le debuggeur mais il n'affiche aucune info...
:(
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
euh...normalement, si tu mets des points d'arrêts (breakpoints), ton prog doit s'arrêter durant l'exécution, pour te permettre de voir tes variables.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
1 décembre 2010

oui j en ai mis deja mé bn!!!
j v essayer de me casser la tete avec ca
merci pour tn aide commeme:)
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
C'était donc p qui n'avait pas les bonnes valeurs?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
15038
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2021
94
Et n'oublies pas de cliquer sur "Réponse acceptée"

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
Si je peux ajouter un petit truc: Si tu cherches à avoir une std::map sur disque dur, tu peux utiliser Berkeley DB. C'est une bdd en local qui fonctionne par clé-valeur. Vulgairement, c'est un std::map sur disque dur.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question