Warum wird meine Zeichenfolge nicht gedruckt?

7

Ich habe einen Code, der in seiner kleinsten vollständigen Form, der das Problem aufweist (ein guter Bürger zu sein, wenn es darum geht, Fragen zu stellen), im Wesentlichen auf Folgendes hinausläuft:

%Vor%

und ich erwarte, dass es ausgegeben wird

%Vor%

Stattdessen, stattdessen, bekomme ich nur:

%Vor%

Warum ist das? Warum kann ich meine Zeichenfolge nicht ausgeben? Ist die Zeichenfolge leer? Ist cout irgendwie kaputt? Bin ich verrückt geworden?

    
paxdiablo 03.02.2011, 06:09
quelle

5 Antworten

8

"Value was: " ist vom Typ const char[12] . Wenn Sie eine Ganzzahl hinzufügen, verweisen Sie effektiv auf ein Element dieses Arrays. Um den Effekt zu sehen, ändern Sie x in 3 .

Sie müssen explizit ein std::string konstruieren. Andererseits können Sie nicht std::string und eine Ganzzahl verketten. Um dies zu umgehen, können Sie in ein std::ostringstream schreiben:

%Vor%     
Oswald 03.02.2011, 06:15
quelle
4

Sie können keinen Zeichenzeiger und eine ganze Zahl hinzufügen (Sie können, aber es wird nicht das tun, was Sie erwarten).

Sie müssen zuerst das x in einen String konvertieren. Sie können es entweder Out-of-Band der C-Art tun, indem Sie die Itoa-Funktion verwenden, um die ganze Zahl in eine Zeichenfolge zu konvertieren:

%Vor%

Oder der STD Weg mit einem Stream:

%Vor%

Oder direkt in der cout-Zeile:

%Vor%     
Mahmoud Al-Qudsi 03.02.2011 06:13
quelle
4

Amüsant :) Das zahlen wir für die C-Kompatibilität und das Fehlen einer integrierten string .

Wie auch immer, ich denke, der beste Weg, dies zu tun, wäre:

%Vor%

Da der lexical_cast Rückgabetyp hier std::string ist, wird die richtige Überladung von + ausgewählt.

    
Matthieu M. 03.02.2011 07:49
quelle
2

C ++ verkettet Zeichenfolgen nicht mit dem Operator +. Es gibt auch keine automatische Hochstufung von Datentypen zu Zeichenketten.

    
helloworld922 03.02.2011 06:13
quelle
2

In C / C ++ können Sie mit dem + -Operator keine Ganzzahl an ein Zeichen-Array anhängen, da ein char -Array zu einem Zeiger verfällt. Um eine int an eine string anzuhängen, verwenden Sie ostringstream :

%Vor%     
Vijay Mathew 03.02.2011 06:16
quelle

Tags und Links