Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1362 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] ajouter dans une multimap des chaines de caractères...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] ajouter dans une multimap des chaines de caractères...

n°798540
antsite
Je me souviens
Posté le 17-07-2004 à 15:54:11  profilanswer
 

salut,
j'ai un problème :
dans une boucle (dont je ne connais pas à l'avance le nombre d'itérations), je remplis une multimap<int, const char*> avec la méthode insert().
seulement voila, à chaque tour de boucle, je veux mettre une chaine dans la multimap, et l'adresse du char* est la même, c'est le contenu à cette adresse qui change. donc forcément dans ma multimap toutes les valeures des champs sont identique puisque les pointeurs le sont (et donc la valeur est le contenu de l'adresse au dernier passage de boucle).
 
comment je peux faire pour à chaque fois recopier la chaine a un endroit ou elle ne sera pas détruite ? on ne peut pas dire à la hashmap que comme value, elle ne prend pas juste le pointeur mais recopie en mémoire et prend le pointeur de cette nouvelle zone mem ?
 
encore si je savais le nombre exact de boucles je pourrais allouer ce qu'il me faut, mais la je peux pas... et le problème si je fais un new à chaque tour, comment je peux libérer la mémoire en fin de programme ?
 
merci
   ANT

mood
Publicité
Posté le 17-07-2004 à 15:54:11  profilanswer
 

n°798543
blackgodde​ss
vive le troll !
Posté le 17-07-2004 à 15:59:55  profilanswer
 

multimap<int, const char*> >> tu aurais un const char * qui change ? tu as pas un probleme de conception ?
 
utilises std::string


---------------
-( BlackGoddess )-
n°798548
antsite
Je me souviens
Posté le 17-07-2004 à 16:04:31  profilanswer
 

oui c'est vrai, je voulais dire  multimap<int, char*>.
j'avais pensé à utiliser string mais le problème n'est-il toujours pas le même :
à chaque boucle je fais quoi ?
string buf = mon_char;
insert(..., buf);
?
mais dès la sortie de la boucle, l'objet string va être détruit non ?
et si je déclare  
string buf; en dehors de la boucle
et dans la boucle
buf = mon_char;
même problème que dans le 1er poste non ? dans la multimap y aura partour la même adresse vers la string "buf" ?

n°799458
blackgodde​ss
vive le troll !
Posté le 19-07-2004 à 11:58:12  profilanswer
 

non, un multimap porte le std::string, et le std::string porte la chaine (ce qui n'est pas le cas d'un char*)


---------------
-( BlackGoddess )-
n°799556
antsite
Je me souviens
Posté le 19-07-2004 à 13:38:17  profilanswer
 

yes, en effet j'avais testé tout ça hier et ça marche bien
 :hello:

n°799588
Taz
bisounours-codeur
Posté le 19-07-2004 à 14:13:50  profilanswer
 

c'est quoi ces char * ?

n°799603
antsite
Je me souviens
Posté le 19-07-2004 à 14:39:42  profilanswer
 

j'utilise la fonction _findfirst / _findnext qui utilise une structeur findata_t je crois, et le nom du fichier dans cette structure est le champ : char name[MAX_PATH];
mais si tu veux à chaque appel de findnext, l'adresse de name ne change pas c'est son contenu qui change, et donc avant je mettais toujours
insert(mypair(cle, fdata.name)); ce qui fait que cf 1er post...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] ajouter dans une multimap des chaines de caractères...

 

Sujets relatifs
comparaison de chaines de caracteresProbleme de decompression de fichier zip contenant des caracteres é
comparer deux chaines de caractere en java scriptDev-C++ Ajouter la libraire *.lib au projet ? (Et utiliser compilo MS)
[Python] TypeError sur une concaténation de chaines [Résolu]entier -> chaine de caractères
Ajouter un projet ASP .NETcomment ajouter un fichier ds une BD?
[php/SQL] ajouter des enregistrement a laide d'une textarea 
Plus de sujets relatifs à : [C++] ajouter dans une multimap des chaines de caractères...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR