Strings
-
Soll ich, bevor ich += das erste mal verwende, davor noch str.clear(); schreiben?
-
Nein, du musst str vorher nur mit irgendwelchem Wert initialisieren, da der Inhalt ohne expliziter Wertzuweisung undefiniert ist. Mach's so:
string str = ""; char c; // bla str += c;
-
Danke!
-
mikey schrieb:
Nein, du musst str vorher nur mit irgendwelchem Wert initialisieren, da der Inhalt ohne expliziter Wertzuweisung undefiniert ist.
nö, der standardkonstruktor erstellt einfach einen leeren string.
btw. solltest du sowieso nicht operator+= sondern push_back verwenden.
-
queer_boy schrieb:
btw. solltest du sowieso nicht operator+= sondern push_back verwenden.
warum?
-
push_back? Wenn dann wohl eher append. Aber += ist gleich append.
-
Hmm nein? Warum nicht push_back? http://www.cplusplus.com/reference/string/string/push_back.html ...
-
Nun push_back erinnert eher mehr Listen. Nicht so sehr der Grund. Aus ein Charliteral kann schnell mal ein ein CharArray-Literal werden, dann muss du eh ein append oder += verwenden.
-
Hmm weil std::string auch als ein Container (nur halt mit Inhalt char-Array) angesehen werden kann, ist push_back vorhanden.(denke ich mal
). Nach der Referenz sollte die Funktion bei einzellnen chars aber identisch sein. Du hast recht, wenn du einen String anhängen willst, kannst du das nicht mit push_back, aber das ist auch bei anderen container-typen so: push_back fügt ein Item und keine Sequenz von Items ein.
-
camper schrieb:
queer_boy schrieb:
btw. solltest du sowieso nicht operator+= sondern push_back verwenden.
warum?
der grund war wohl nur eine falsche erinnerung. merke: niemals tipps ohne double-check geben.
die erinnerung war: push_back(x) ist gleich append(1, x) und +=(x) ist gleich append(string(1, x)), was auch stimmt, nur schreibt der standard eine implementation ja gar nicht fix fest.
btw. ein append nur für einen character gibt es nicht. (das ist nämlich push_back)
viel aufwand um nichts.