Copier map dans un fichier [Résolu]

Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Dernière intervention
1 décembre 2010
- - Dernière réponse : cptpingu
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
- 1 déc. 2010 à 15:43
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
Afficher la suite 

Votre réponse

18 réponses

Meilleure réponse
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Dernière intervention
1 décembre 2010
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fatenbenhamadi
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Dernière intervention
1 décembre 2010
0
Merci
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;
Commenter la réponse de fatenbenhamadi
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Dernière intervention
1 décembre 2010
0
Merci
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
Commenter la réponse de fatenbenhamadi
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Dernière intervention
1 décembre 2010
0
Merci
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
Commenter la réponse de fatenbenhamadi
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Dernière intervention
1 décembre 2010
0
Merci
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
Commenter la réponse de fatenbenhamadi
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Dernière intervention
1 décembre 2010
0
Merci
merci pour le tuto,
j'ai essayé avec le debuggeur mais il n'affiche aucune info...
:(
Commenter la réponse de fatenbenhamadi
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
10
Date d'inscription
lundi 14 septembre 2009
Dernière intervention
1 décembre 2010
0
Merci
oui j en ai mis deja mé bn!!!
j v essayer de me casser la tete avec ca
merci pour tn aide commeme:)
Commenter la réponse de fatenbenhamadi
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
14338
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 janvier 2019
5767
0
Merci
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
Commenter la réponse de BunoCS
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
164
0
Merci
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
Commenter la réponse de cptpingu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.