copie de const char* [RESOLU] - C++ - Programmation
Marsh Posté le 30-05-2006 à 20:29:59
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
Marsh Posté le 30-05-2006 à 20:35:53
dans un const char * tu stockes la valeur retour de c_str, cad une adresse
Marsh Posté le 30-05-2006 à 20:36:53
c'est ce que j'ai fait, mais le const char* est modifié lorsque la string est modifiée
Marsh Posté le 30-05-2006 à 20:42:17
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().
Marsh Posté le 30-05-2006 à 20:43:18
la doc de sgi n'est pas tres precise à propos de c_str sur ce point
Marsh Posté le 30-05-2006 à 20:48:33
il faut alouer et copier, mais est-ce vraiment necessaire ?
Marsh Posté le 30-05-2006 à 20:50:00
Merci pour ton aide
oui c'est nécessaire. Mais comment copier tous les caractères et non pas seulement le 1er ?
Marsh Posté le 30-05-2006 à 22:00:28
Code :
|
sinon ça fait un truc comme ça
Marsh Posté le 31-05-2006 à 15:12:42
c'est pas plus simple de créer une deuxième string (quitte à remployer la méthode 'c_str()') ?
genre :
Code :
|
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
Marsh Posté le 31-05-2006 à 18:03:14
ce n'est malheureusement pas possible dans mon programme, mais merci quand même
Marsh Posté le 30-05-2006 à 20:12:06
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