Copier map dans un fichier

Résolu
fatenbenhamadi Messages postés 10 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 1 décembre 2010 - 1 déc. 2010 à 03:22
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 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

18 réponses

fatenbenhamadi Messages postés 10 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 1 décembre 2010
1 déc. 2010 à 11:19
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
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 09:31
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
0
fatenbenhamadi Messages postés 10 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 1 décembre 2010
1 déc. 2010 à 09:49
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;
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 10:03
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fatenbenhamadi Messages postés 10 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 1 décembre 2010
1 déc. 2010 à 10:08
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
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 10:14
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
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 10:16
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
0
fatenbenhamadi Messages postés 10 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 1 décembre 2010
1 déc. 2010 à 10:25
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
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 10:33
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
0
fatenbenhamadi Messages postés 10 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 1 décembre 2010
1 déc. 2010 à 10:39
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
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 10:44
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
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 10:45
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
0
fatenbenhamadi Messages postés 10 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 1 décembre 2010
1 déc. 2010 à 10:57
merci pour le tuto,
j'ai essayé avec le debuggeur mais il n'affiche aucune info...
:(
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 10:59
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
0
fatenbenhamadi Messages postés 10 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 1 décembre 2010
1 déc. 2010 à 11:04
oui j en ai mis deja mé bn!!!
j v essayer de me casser la tete avec ca
merci pour tn aide commeme:)
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 11:21
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
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2010 à 11:21
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
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
1 déc. 2010 à 15:43
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
0
Rejoignez-nous