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

  FORUM HardWare.fr
  Programmation
  C++

  [RESOLU] copie de const char*

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] copie de const char*

n°1377777
oc_alex86
Posté le 30-05-2006 à 20:12:06  profilanswer
 

Bonjour,
j'ai un const char* qui est en fait une string transformée.  
J'aimerais copier ce const char* mais le problème, c'est que si je modifie la string, le const char* est aussi modifié.  
Comment faire pour copier aussi la valeur pointée ?


Message édité par oc_alex86 le 31-05-2006 à 14:58:42
mood
Publicité
Posté le 30-05-2006 à 20:12:06  profilanswer
 

n°1377787
Taz
bisounours-codeur
Posté le 30-05-2006 à 20:26:58  profilanswer
 

c'est faux.
 
string s("blah" );
s[0] = 'c';
 

n°1377788
oc_alex86
Posté le 30-05-2006 à 20:29:59  profilanswer
 

je crois que tu n'as pas compris ma question :
je vais essayer d'être plus clair :
j'ai une string lecture qui est souvent modifiée :
et lorsque certaines conditions sont vraies, j'aimerai copier cette string dans une autre variable qui est elle un const char*
j'utilise donc la méthode lecture.c_str() mais ça ne marche pas

n°1377791
skelter
Posté le 30-05-2006 à 20:35:53  profilanswer
 

dans un const char * tu stockes la valeur retour de c_str, cad une adresse

n°1377792
oc_alex86
Posté le 30-05-2006 à 20:36:53  profilanswer
 

c'est ce que j'ai fait, mais le const char* est modifié lorsque la string est modifiée

n°1377794
++fab
victime du syndrome IH
Posté le 30-05-2006 à 20:42:17  profilanswer
 

oui, c'est normal. Dès que tu appelles une fonctions membre non const de std::string, tu est susceptible d'invalider le char* résultant de .c_str().

n°1377795
skelter
Posté le 30-05-2006 à 20:43:18  profilanswer
 

la doc de sgi n'est pas tres precise à propos de c_str sur ce point

n°1377797
oc_alex86
Posté le 30-05-2006 à 20:44:37  profilanswer
 

comment dois-je procéder alors ?

n°1377800
skelter
Posté le 30-05-2006 à 20:48:33  profilanswer
 

il faut alouer et copier, mais est-ce vraiment necessaire ?

n°1377801
oc_alex86
Posté le 30-05-2006 à 20:50:00  profilanswer
 

Merci pour ton aide
oui c'est nécessaire. Mais comment copier tous les caractères et non pas seulement le 1er ?

mood
Publicité
Posté le 30-05-2006 à 20:50:00  profilanswer
 

n°1377804
skelter
Posté le 30-05-2006 à 20:54:14  profilanswer
 

avec std::copy par exemple

n°1377829
Taz
bisounours-codeur
Posté le 30-05-2006 à 21:59:36  profilanswer
 

utilise std::vector<char> si tu peux.

n°1377831
Taz
bisounours-codeur
Posté le 30-05-2006 à 22:00:28  profilanswer
 

Code :
  1. char*
  2. string_dup(const std::string &s)
  3. {
  4.   char *cstr;
  5.   cstr = new char[s.size() + 1];
  6.   s.copy(cstr, std::string::npos);
  7.   cstr[s.size()] = '\0';
  8.   return cstr;
  9. }

sinon ça fait un truc comme ça

n°1378163
oc_alex86
Posté le 31-05-2006 à 14:58:28  profilanswer
 

ok c'est bon merci beaucoup

n°1378181
prophet-pr​o
Posté le 31-05-2006 à 15:12:42  profilanswer
 

c'est pas plus simple de créer une deuxième string (quitte à remployer la méthode 'c_str()') ?
 
genre :
 
 

Code :
  1. std::string original_string("mon ancienne chaîne..." );
  2. std::string new_string = string;

 

 
Tu peux ensuite modifier new_string et original_string à ta guise, sans que l'une des chaîne influe sur l'autre. Ensuite tu utilises new_string.c_str() comme tu faisai avant... c'est quand même moins prise de tête :)

n°1378332
oc_alex86
Posté le 31-05-2006 à 18:03:14  profilanswer
 

ce n'est malheureusement pas possible dans mon programme, mais merci quand même


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

  [RESOLU] copie de const char*

 

Sujets relatifs
[résolu] Dépendances.htpasswd -> mdp en clair ?[RESOLU]
CHECKED et case à cocher : liste à partir d'une table [RESOLU][Résolu] Java - Jsp - ArrayList dans ArrayList
[Résolu] Plusieurs AND / OR dans un ifProbleme de condition dans mes requetes, :'( help [RESOLU] !!
[RESOLU] [débutant] CSS - comment centrer une DIV?[Resolu] Construire un tar en java
include conditionnel + const[Résolu] Problème de compilation fonction poll()
Plus de sujets relatifs à : [RESOLU] copie de const char*


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