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 ?
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 ?
Donc tu veux copier le contenu d'un string dans un char*. Et si la string est modifiée, le char* doit aussi être modifié, c'est ça ?
non, justement pas. J'aimerais que le char ne soit pas modifié
Bon, ben fais une simple copie alors avec strncpy.
merci pour ta réponse.
ça marche
il y a juste un smiley qui apparait à la fin du const char * Pourquoi ?
ton PC est heureux?Envoyé par oc_alex86
Parce que tu ne copies pas correctement ta chaîne, sans doute !Envoyé par oc_alex86
Toute opération qui modifie une chaîne invalide les pointeurs et itérateurs préalablement obtenus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 std::string toto = "toto"; char const * const ctoto = toto.c_str(); toto += "titi"; // à partir d'ici ctoto n'est plus valide et ne doit en plus aucun cas être utilisé.
Bref, si tu dois extraire un pointeur sur ta chaine, tu devras copier les contenus.
C'est pas dans la FAQ ?
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Tiens ça sert à quoi de mettre 2 fois le mot-clef const ? :oEnvoyé par Luc Hermitte
"const" s'applique toujours sur ce qui le précède => FAQ.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Je sais bien que const s'applique à ce qui précede et j'ai beau aller voir dans la FAQ, je vois toujours pas à quoi ça sert de mettre le 'const' apres '*'
Le pointeur et l'espace pointé sont constants.
Ca veut donc dire que le pointeur pointe toujours vers la meme zone memoire et qu'on peut pas faire :
Je me trompe ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 std::string toto = "toto"; std::string tutu = "tutu"; char const * const ctoto = toto.c_str(); ctoto = tutu.c_str();
Non, tu ne te trompes pas.
Partager