Zeiger übergabe hackt



  • Hallo alle Zusammen,

    ich bin noch neu in c++, vielleicht kann mir jemand helfen?
    mein Problem ist, ich will einen Zeiger Übergeben wie folgt
    Die aufgerufene Funktion lautet:

    void save(float d,string *zahl)
    { 
        ostringstream Str; 
        Str << d;  
        string ZahlAlsString = Str.str();
        zahl = &ZahlAlsString; 
    }
    

    Ich habe diese in der Main Funktion so aufgerufen

    float data =1.1111;
    string *buf;
    save(data,buf);
    cout << *buf <<endl;
    

    was einen LAufzeitfehler herauf beschwört.

    danke schonmal gruß Timb0



  • Du hast mit string* buf nur einen Zeiger, aber keinen Speicher dafür bereitgestellt.
    Versuch es mit Referenzen und lokalen Objekten:

    void save(float d, string& zahl)
    { 
        ostringstream Str;
        Str << d;
        zahl = Str.sstr();
    }
    
    float data = 1.1111f;
    string buf;
    save(data, buf);
    cout << buf << endl;
    


  • uich denke doch dsa muss so heißen oder?

    void save(float d, string& zahl)
    {
        ostringstream Str;
        Str << d;
        zahl = Str.sstr();//sstr() is doch falsch muss doch str() heißen oder?
    }
    
    float data = 1.1111f;
    string buf;
    save(data, buf);
    cout << buf << endl;
    

    @Airdamn ich wollte ihm auch gerade sagen das es mit referenzen besser geht, man sieht ich habe verstanden 🙂



  • Ja stimmt, hab an der Stelle ein s zuviel 🙂



  • Nur der Vollständigkeit halber:

    string *buf = new string();
    //...
    delete buf;
    

    Aber Referenzen sind (in diesem Fall (wie in vielen)) besser.


Anmelden zum Antworten