Избегайте перезаписи содержимого существующего файла при записи в файл - PullRequest
16 голосов
/ 22 ноября 2011

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

ofstream fout("filename.txt");

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

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

fout << score << endl << player; 

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

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

Ответы [ 2 ]

34 голосов
/ 22 ноября 2011

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

ofstream fout("filename.txt", ios::app); 
13 голосов
/ 22 ноября 2011

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

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

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

...