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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] chaines littérales et const

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] chaines littérales et const

n°389368
kenshiro18​2
Posté le 10-05-2003 à 21:16:10  profilanswer
 

Bonjour,
 
Un truc que je ne comprends pas, c'est que le bout de code suivant compile:
 
char *ptr = "coucou";
 
Le Stroustrup me dit que les chaines littérales sont "const char*". Comment se fait-il que mon compilateur (g++ 3.2.2, VC6) ne bronche pas ? Normalement ne faudrait-il pas utiliser un "const_cast" ?
 
Si je fais:
char *ptr = "coucou"; // marche aussi avec un Toto*
const char *ptr2 = ptr;
 
g++ me donne:
invalid conversion from `const char*' to `char*'
Ce que je trouve normal.
 
Et vous qu'en pensez vous ?

mood
Publicité
Posté le 10-05-2003 à 21:16:10  profilanswer
 

n°389374
Taz
bisounours-codeur
Posté le 10-05-2003 à 21:19:16  profilanswer
 

ben c'est comme ça... c'est const, mais bon, je connais aucun compilo qui te jetera pour ça


Message édité par Taz le 10-05-2003 à 21:20:23
n°389388
leneuf22
Posté le 10-05-2003 à 21:31:27  profilanswer
 

Imagine que ce soit vraiment respecté, tu devrais faire ça ?

Code :
  1. char* ptr = (char*)"coucou";


(cast de const char* à char*)
 
Et donc ça serait un petit peu lourd à force :)
Ne nous plaignons pas !


Message édité par leneuf22 le 10-05-2003 à 21:32:56
n°389392
Taz
bisounours-codeur
Posté le 10-05-2003 à 21:33:51  profilanswer
 

leneuf22 a écrit :

Imagine que ce soit vraiment respecté, tu devrais faire ça ?

Code :
  1. char* ptr = (char*)"coucou";


(cast de const char* à char*)
 
Et donc ça serait un petit peu lourd à force :)
Ne nous plaignons pas !

ça c'est en C  :non:

n°389399
kenshiro18​2
Posté le 10-05-2003 à 21:48:42  profilanswer
 

leneuf22 a écrit :

Imagine que ce soit vraiment respecté, tu devrais faire ça ?

Code :
  1. char* ptr = (char*)"coucou";


(cast de const char* à char*)
 
Et donc ça serait un petit peu lourd à force :)
Ne nous plaignons pas !


Non je ne trouve pas ça lourd. On n'est pas sensé caster des objets const en non-const, sauf dans le cas de biblios mal fichues. Alors quand ça arrive je prérère mettre un "const_cast", ça montre bien qu'il y a un problème.

n°389400
leneuf22
Posté le 10-05-2003 à 21:49:14  profilanswer
 

...désolé !

n°389415
schnapsman​n
Zaford Beeblefect
Posté le 10-05-2003 à 22:16:06  profilanswer
 

++Taz a écrit :

ben c'est comme ça... c'est const, mais bon, je connais aucun compilo qui te jetera pour ça


 
forte 6 si


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°389418
Taz
bisounours-codeur
Posté le 10-05-2003 à 22:20:26  profilanswer
 

  [:spamafote] de toutes façons tout et n'importe quoi compile alors...

n°389528
ToxicAveng​er
Posté le 11-05-2003 à 00:54:14  profilanswer
 

++Taz a écrit :

  [:spamafote] de toutes façons tout et n'importe quoi compile alors...


 
En C oui. En C++, c'est moins évident.

n°389543
konar_spre​me
Posté le 11-05-2003 à 02:05:59  profilanswer
 

++Taz a écrit :

ben c'est comme ça... c'est const, mais bon, je connais aucun compilo qui te jetera pour ça


Theoriquement l ecriture de  
char *str = "abc" n'est pas valide en C++ (ms valide en C)
le const "devrait" etre mis. Ms les compilos accepte car cette syntaxe n'est pas considérée comme vraiment invalide, simplement dépassée (en gros fodrait songer de nos jours ds un vrai prog a eviter d'ecrire ce genre de chose)
 
(cf standard C++ Annexe C.1.1.4, pour les kiffeurs)

mood
Publicité
Posté le 11-05-2003 à 02:05:59  profilanswer
 

n°389555
Taz
bisounours-codeur
Posté le 11-05-2003 à 07:06:17  profilanswer
 

ToxicAvenger a écrit :


 
En C oui. En C++, c'est moins évident.

soit pas si sur de ça...

n°390708
ToxicAveng​er
Posté le 12-05-2003 à 17:03:28  profilanswer
 

++Taz a écrit :

soit pas si sur de ça...


 
on peut qd meme ecrire de sacré sapolerie en C  :whistle:


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

  [C++] chaines littérales et const

 

Sujets relatifs
[PHP] Comparaison de chaines de caracteres[vbscript]- erreur dans la recherche de chaines de caractère
algos : comparaison de 2 chainesun petit plus sur les chaines
gestion des chaines de caracteresTrouver la chaine entre deux chaines
Les chaines de caracteres, les tableaux....Algorithme de recherche/rempalcement de chaînes dans un fichier ??
[VC++] map, struct et const & : pb d'insertion d'eltsiverser des chaines de caracteres
Plus de sujets relatifs à : [C++] chaines littérales et const


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