Vermeiden Sie, dass der Inhalt einer vorhandenen Datei beim Schreiben in eine Datei überschrieben wird

  • Ich versuche, ein Spiel zu erstellen, das Highscores in eine TXT-Datei implementiert. Die Frage, die ich habe, ist folgende: Wenn ich eine Aussage mache, wie:

     ofstream fout("filename.txt");
     

    Erstellt dies eine Datei mit diesen Namen oder suchen Sie einfach nach einer Datei mit diesem Namen?

    Die Sache ist, wenn ich das Programm erneut starte und die folgende Aussage mache:

     fout << score << endl << player; 
     

    überschreibt meine vorherigen Ergebnisse!

    Gibt es eine Möglichkeit, so zu machen, dass die neuen Scores die alten nicht überschreiben, wenn ich in die Datei schreibe?

    28 October 2016
    nbroYasser
2 answers
  • std::ofstream erstellt standardmäßig eine neue Datei. Sie müssen die Datei mit dem Parameter anhängen erstellen.

     ofstream fout("filename.txt", ios::app); 
     
    28 October 2016
    nbroYasser
  • Wenn Sie einfach an das Ende der Datei anhängen möchten, können Sie die Datei im Anfügemodus öffnen, sodass das Schreiben am Ende der Datei erfolgt und der Inhalt der Datei nicht überschrieben wird Vorhanden:

     ofstream fout("filename.txt", ios::app);
     

    Wenn Sie eine bestimmte Textzeile mit Daten überschreiben möchten, anstatt sie nur auf die Wenn Sie mit dem Anfügemodus enden, ist es wahrscheinlich besser, die Datei zu lesen und die Daten zu parsen, sie dann zu reparieren (Hinzufügen, Entfernen von Teilen oder Bearbeiten) und alles neu in die Datei zu schreiben.

    22 November 2011
    Seth Carnegie