Problem mit string
-
Hallo wieso wird mir hier ausgeben:
Das Haus ist x Meter hoch ?
x steht jetzt hier für das Herz in ASCII Zeichen.
Eigentlich müsste die Ausgabe doch sein: Das Haus ist 3 Meter hoch
string high = "aaa"; // 3 zeichen string var ="Das Haus\n"; var +="ist "; var+= strlen(high.c_str() ); var +=" Meter hoch\n"; cout << var ;
-
Weil keine Zahl angehängt wird, sondern ein einzelnes Zeichen mit dem Wert 3. Wenn du strings zusammenbauen möchtest benutzt du am besten std::ostringstream.
PS:
Warum strlen( var.c_str()? std::string besitzt die Methode length()
-
Guck hier in der FAQ um Zahlen in Strings umzuwandeln:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html
-
strr schrieb:
Hallo wieso wird mir hier ausgeben:
Das Haus ist x Meter hoch ?
x steht jetzt hier für das Herz in ASCII Zeichen.
Eigentlich müsste die Ausgabe doch sein: Das Haus ist 3 Meter hoch
string high = "aaa"; // 3 zeichen string var ="Das Haus\n"; var +="ist "; var+= strlen(high.c_str() ); var +=" Meter hoch\n"; cout << var ;Es gibt keinen Operator, um einen Integer an einen String anzuhängen. Vermutlich wird es implizit in einen char umgewandelt, wobei dann aber eigentlich ein undruckbares Zeichen rauskommen sollte.
Es sollte funktionieren mit:
#include <sstream> #include <string> using namespace std; int main() { string high = "aaa"; // 3 zeichen string var ="Das Haus\n"; var +="ist "; stringstream sstr; sstr << high.size(); //man sollte nicht strlen(), sondern die Funktionen von string benutzen var += sstr.str(); var +=" Meter hoch\n"; }EDIT: ich war mal wieder zu langsam
