Heim > Backend-Entwicklung > C++ > Hauptteil

Wie entscheidet „cout', ob die Adresse oder die Zeichenfolge gedruckt wird, wenn Sie einen Zeichenzeiger übergeben?

Susan Sarandon
Freigeben: 2024-11-04 10:23:31
Original
231 Leute haben es durchsucht

How does `cout` decide whether to print the address or the string when you pass a character pointer?

Grundlegendes zum Überladen von Stream-Operatoren für Char-Zeiger

Beim Drucken eines Zeichenzeigers mit printf() bestimmt der Konvertierungsspezifizierer, ob die Adresse oder die Zeichenfolge ausgegeben wird, z. B. %u für die Adresse oder %s für die Zeichenfolge. Wie entscheidet es jedoch bei C-Streams und cout, welches ausgegeben werden soll?

Betrachten Sie den folgenden Code:

<code class="cpp">char ch = 'a';
char *cptr = &ch;
cout << cptr << endl;
Nach dem Login kopieren

In diesem Beispiel versucht cout, cptr als Zeichenfolge zu interpretieren. Um die Adresse von ch mit cout auszugeben, muss eine Konvertierung angewendet werden, um diese Mehrdeutigkeit aufzulösen.

Lösung: Umwandlung in einen Void-Zeiger

Die bevorzugte Methode zum Erhalten eines Die Adresse mit cout erfolgt durch Typumwandlung. Der richtige Ansatz ist:

<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>
Nach dem Login kopieren

Indem wir cptr in void * umwandeln, zwingen wir cout, die entsprechende Überladung auszuführen, die einen void-Zeiger (ostream& Operator<< (ostream& o, const void *p.) benötigt )). Dadurch wird sichergestellt, dass die Adresse wie vorgesehen gedruckt wird.

Das obige ist der detaillierte Inhalt vonWie entscheidet „cout', ob die Adresse oder die Zeichenfolge gedruckt wird, wenn Sie einen Zeichenzeiger übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!