char + literal + std::string
-
Hi!
Warum gibt das ...
std::string str = "blabla"; cout << (char)97 + "literal" + str << endl;... nur "blabla", und manchmal sogar vorher noch was ganz komisches, aus?
Ohne dem Literal funktioniert es aber, doch das Literal wird doch eh implizit zu std::string gecastet?
-
Kommt draufan ob char + string literal ODER string literal + std::string zuerst gerechnet wird...
Edit
doch das Literal wird doch eh implizit zu std::string gecastet?
Nein, nicht prinzipiell... und gecastet wird hier sowiso nichts, wenn schon, dann konstruiert...
-
Ja, aber in meinem Fall?
Und woran liegts nun?
-
steps doch mal durch mit dem debugger...
-
Ja denn du nutzt den + Operator der datentypen char und char* in diesem Zusammenhanng falsch. In diesem Ausdruck wird die Addresse des String-Literals zur 97 hinzuaddiert und was der mit dem Objekt macht weiß ich jetzt auch nicht. Jedenfalls kommt es dann zu einer unsinnigen Ausgabe. Korrekt wäre
cout << (char)97 << "literal" << str;
-
cout kann ich aber in der konkreten Anwendung nicht benutzen.
Naja, dann werde ich halt den Konstruktor von std::string verwenden (mit 1x char x füllen).
-
Addier0r schrieb:
cout kann ich aber in der konkreten Anwendung nicht benutzen.
Dann führe deine Helfer nicht in die Irre indem du es in deinem Code so zeigst.
op+ ist linksassoziativ, du könntest alternativ einfach einen leeren string voranstellen:std::string() + (char)90 + "literal" + str