Strings mit Hilfe einer Funktion verändern/Überschreiben
-
Hallo liebe C++ Community,
ich stehe vo folgendem Problem: ich versuche mit Hilfe einer Funktion einen String zu verändern und ihn auch im Gültigkeitsbereich der main()-Funktion zu behalten. Dies scheint z.B. mit Arrays von int/double Werten bzw. von int/double Werten genrell zu funktionieren, bei strings jedoch nicht. Ich wäre sehr dankbar, wenn jemand meinen Denkfehler aufklären könnte.
#include <iostream> #include <string> using namespace std; void str (string s); int main() { string c; str(c); cout << c << endl; return 0; } void str (string s) { s = "Hello World!"; cout << s << endl; }
Ich erwarte als Ausgabe zwei mal "Hello World!" es erscheint jedoch nur einmal.
Vielen Dank für eure Hilfe!
Kiri
-
Du kopierst den String und änderst die Kopie. Benutze als Parameter eine Referenz:
void str (string& s);
-
Vielen Dank für diese schnelle Hilfe!
-
kj6938s schrieb:
bzw. von int/double Werten genrell zu funktionieren,
Das ist übrigens falsch, die verhalten sich nicht anders als string.
-
kj6938s schrieb:
Dies scheint z.B. mit Arrays von int/double Werten bzw. von int/double Werten genrell zu funktionieren,
Arrays (die von C geerbten) funktionieren auch anders.
Bei einem C-String (Array of char) geht das auch.Du hast aber die Klasse
string
. Das ist etwas ganz anderes.