Избегайте перезаписи содержимого существующего файла при записи в файл

Я пытаюсь сделать игру, которая реализует высокие оценки в .txt файле. У меня есть вопрос: когда я делаю выражение, например:

ofstream fout("filename.txt");

Создает ли это файл с этим именем или просто ищет файл с таким именем?

Дело в том, что всякий раз, когда я запускаю программу заново и делаю следующее утверждение:

fout << score << endl << player; 

он перезаписывает мои предыдущие оценки!

Есть ли способ сделать так, чтобы новые оценки не перезаписывали старые, когда я пишу в файл?

Ответы

Ответ 1

std::ofstream по умолчанию создает новый файл. Вы должны создать файл с добавить параметр.

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

Ответ 2

Если вы просто хотите добавить в конец файла, вы можете открыть файл в режиме добавления, так что любая запись выполняется в конце файла и не перезаписывает содержимое ранее сохраненного файла:

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

Если вы хотите переписать определенную строку текста данными вместо того, чтобы просто вставлять их в конец с помощью режима добавления, вам, вероятно, лучше не читать файл и анализировать данные, а затем фиксировать его (добавив что-либо, удаляя независимо от того, редактируя что угодно) и все это записывается обратно в файл заново.