写入文件时,请避免覆盖现有文件的内容

时间:2011-11-21 23:51:52

标签: c++ ofstream

我正在尝试将高分的游戏制作成.txt文件。我的问题是:当我发表如下声明时:

ofstream fout("filename.txt");

这是创建具有该名称的文件,还是只查找具有该名称的文件?

重要的是,无论何时我重新启动程序并发表以下声明:

fout << score << endl << player; 
它会覆盖我之前的分数!

有没有办法让我这样做,以便在我写入文件时新分数不会覆盖旧分数?

2 个答案:

答案 0 :(得分:34)

默认情况下,

std::ofstream会创建一个新文件。您必须使用append parameter创建文件。

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

答案 1 :(得分:13)

如果您只想附加到文件的末尾,则可以在附加模式下打开文件,因此任何写入都在文件末尾完成,并且不会覆盖以前存在的文件的内容: / p>

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

如果你想用数据覆盖特定的文本行而不是用附加模式将它们添加到最后,你可能最好不要读取文件并解析数据,然后修复它(添加任何东西,删除无论如何,编辑任何东西)并将它们全部重新写回文件。