17

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

ofstream fout("filename.txt");

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

问题是,每当我重新启动程序并做出以下声明时:

fout << score << endl << player; 

它覆盖了我以前的分数!

有什么办法可以让我在写入文件时新分数不会覆盖旧分数?

4

2 回答 2

34

std::ofstream默认创建一个新文件。您必须使用附加参数创建文件。

ofstream fout("filename.txt", ios::app); 
于 2011-11-22T00:01:32.087 回答
14

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

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

如果您想用数据覆盖特定的文本行,而不是使用附加模式将它们附加到末尾,您最好阅读文件并解析数据,然后修复它(添加任何内容,删除任何内容,编辑无论如何)并将其全部写回文件中。

于 2011-11-22T00:00:54.943 回答