Beim Versuch, String-Literale mit Zeichen-Literalen in C zu verketten, kann es zu unerwartetem Verhalten kommen. Zum Beispiel:
<code class="cpp">string str = "ab" + 'c'; cout << str << endl;</code>
Dieser Code erzeugt eine unvorhersehbare Ausgabe, da der Operator „ “ nicht für die Kombination von Zeichenfolgenliteralen und Zeichenliteralen definiert ist. Stattdessen behandelt der Compiler das Zeichenfolgenliteral als Zeichenfolge im C-Stil (einen const char-Zeiger) und fügt den heraufgestuften int-Wert des Zeichenliterals zur Adresse des Zeichenfolgenliterals hinzu. Dies führt zu undefiniertem Verhalten.
Um dieses Problem zu vermeiden, konvertieren Sie das Zeichenliteral vor der Verkettung explizit in eine Zeichenfolge:
<code class="cpp">std::string str = std::string("ab") + 'c';</code>
Alternativ können Sie die Verkettung verwenden, um das gewünschte Ergebnis zu erzielen:
<code class="cpp">std::string str = "ab"; str += 'c';</code>
Im zweiten Codeausschnitt verfügt das String-Objekt über einen überladenen „ “-Operator, der die beabsichtigte Verkettung durchführt.
Das obige ist der detaillierte Inhalt vonWie verkette ich String-Literale und Zeichen-Literale in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!