string in .txt schreiben (mehrere Zeilen)



  • Hallo,
    ich bastel grad an einem Programm in dem man Profile anlegen kann. Ich bin gerade dabei eine Funktion zu schreiben die ein neues Profil anlegt. Man muss seinen Namen eingeben, die Datei in der die Daten gespeichert werden bekommt diesen Namen. Jetzt sollen da ein paar Grunddaten in die Datei gespeichert werden (name, höhe, gewicht, usw.).

    #include <string>
    #include <fstream>
    using namespace std;
    
    void Profile::newProfile(string name, string height, string weight)
    {
        ofstream f;
        f.open(name + ".txt");
    
        string input = name + "\n" + height + "\n" + weight + "\n";
    
        char* inputBuf = new char[input.length() + 1];
        strcpy_s(inputBuf, input.length() + 1, input.c_string());
    
        f.write(inputBuf, input.length() + 1);
    
        delete[] inputBuf;
        f.close();
    }
    

    An sich funktioniert es fast. In die Datei wird schon geschrieben, aber nur die erste Zeile...

    Was müsste man da machen?

    MfG multipilz5 🙂


  • Mod

    Spricht irgendetwas gegen

    void Profile::newProfile(string name, string height, string weight)
    {
        ofstream f(name + ".txt");
        f << name << '\n' << height << '\n' << weight << '\n';
    }
    

    ?

    Oder besser noch: Datei nicht in der Schreibfunktion aufmachen, sondern dies den Aufrufer erledigen lassen. Denn es klingt ein bisschen so, als hättest du das Problem, dass du deine Daten dauernd überschreibst. Außerdem wäre das auch noch aus weiteren guten Gründen die "normale" Art und Weise, Schreibfunktionen zu programmieren.

    Außerdem lieber noch einmal über deine Klassen und ihre Aufgaben nachdenken. Eine nicht-statische Memberfunktion, die keine Member benutzt, ist irgendwie komisch. Und der Name der Funktion passt auch nicht zum Namen der Klasse.



  • Nein, es spricht nichts dagegen, es funktioniert jetzt.
    Danke 🙂 😃


Anmelden zum Antworten