Maison > Article > développement back-end > Comment imprimer des adresses avec des pointeurs de caractères à l'aide de « cout » ?
Interprétation Cout des pointeurs de caractères
Contrairement à printf(), qui propose des spécificateurs de conversion spécifiques (%u ou %s) pour déterminer s'il faut imprime une adresse ou la chaîne entière pointée par un pointeur char, cout nécessite une approche explicite pour cette distinction.
Exemple de problème :
Considérez l'extrait de code suivant :
<code class="cpp">int main() { char ch = 'a'; char *cptr = &ch; cout << cptr << endl; return 0; }
Dans cet exemple, avec le compilateur GNU par défaut, cout interprète le pointeur char comme une chaîne de style C et tente d'imprimer le caractère pointé par cptr. Cependant, si l'intention est d'imprimer l'adresse de ch à la place, une approche différente est nécessaire.
Solution :
Pour imprimer l'adresse de ch en utilisant cptr avec cout , un cast de type explicite est requis. Ceci est réalisé en utilisant le static_cast<> opérateur, comme démontré ci-dessous :
<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>
En convertissant explicitement cptr en void *, la résolution de surcharge sélectionne l'opérateur ostream& approprié qui prend un pointeur void comme argument. Cela imprime correctement l'adresse de ch.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!