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.


Anmelden zum Antworten