Ausgabe Wert in File sowie Öffnen und hinzufügen



  • Hallo,

    Ich möchte gerne einen Wert in einer File speichern lassen. Dazu sieht mein Code wie folgt aus:

          ofstream fout;
    
          fout << setiosflags(ios::scientific) << setprecision(13);
    
          fout.open(FileName);
    
          fout << n * dt << " " << Wert << "\n";
    
    
          fout.close();
    

    Dabei ist n*dt meine aktuelle Zeit. Mein Problem ist, dass immer nur der letzte Zeitschritt gespeichert wird und nicht wie ich möchte in jedem Zeitschritt eine neue Zeile entsteht.

    LG





  • @dhein sagte in Ausgabe Wert in File sowie Öffnen und hinzufügen:

    Dabei ist n*dt meine aktuelle Zeit. Mein Problem ist, dass immer nur der letzte Zeitschritt gespeichert wird und nicht wie ich möchte in jedem Zeitschritt eine neue Zeile entsteht.

    Dann musst du eben bei jedem einzelnen Zeitschritt das fout << n * dt ... in ausführen, nicht einmalig. Ich sehe hier keine Schleife mit Zeitschritten.

    Also so:

    std::ofstream fout(FileName);
    ...
    while (zeitschleife) {
       ... schritte in Schleife
       fout << n * dt << " " << Wert << "\n";
    }
    

  • Mod

    Es ist übrigens eine gut Idee, Dateien möglichst nicht dauernd zu öffnen und zu schließen. Das kostet nämlich Performance, und nicht zu knapp. Wenn nicht gerade mehrere Minuten Rechenzeit zwischen deinen Schreibvorgängen liegen, solltest du Dateien stets geöffnet belassen.



  • @Cardiac Vielen Dank, habe es zum Laufen bekommen!

    @wob Die Zeitschleife ist im restlichen Programm versteckt, in welchem die Funktion des Speicherns in dem Zeitschritt aufgerufen wird.

    @SeppJ Das ist ein verdammt guter Hinweis, vielen Dank! Da ich sehr viele Zeitschritte durchführe - und da liegt auch nicht viel Zeit zwischen - ist das sicherlich hilfreich. Da hatte ich mir noch keine Gedanken drüber gemacht!



  • @dhein sagte in Ausgabe Wert in File sowie Öffnen und hinzufügen:

    Die Zeitschleife ist im restlichen Programm versteckt, in welchem die Funktion des Speicherns in dem Zeitschritt aufgerufen wird.

    Ok, na dann ist es jedenfalls wichtig, die Datei vorher einmalig zu öffnen und nachher zu schließen. Übergib einfach das fout per Parameter. Ich war gar nicht auf die Idee gekommen, dass du die Datei jedes Mal neu öffnest!


Log in to reply