我正在尝试制作一个将高分实现为 .txt 文件的游戏。我的问题是:当我发表如下声明时:
ofstream fout("filename.txt");
这会创建一个具有该名称的文件,还是只查找具有该名称的文件?
问题是,每当我重新启动程序并做出以下声明时:
fout << score << endl << player;
它覆盖了我以前的分数!
有什么办法可以让我在写入文件时新分数不会覆盖旧分数?
std::ofstream
默认创建一个新文件。您必须使用附加参数创建文件。
ofstream fout("filename.txt", ios::app);
如果您只是想追加到文件的末尾,您可以以追加模式打开文件,因此任何写入都在文件末尾完成,并且不会覆盖先前存在的文件内容:
ofstream fout("filename.txt", ios::app);
如果您想用数据覆盖特定的文本行,而不是使用附加模式将它们附加到末尾,您最好阅读文件并解析数据,然后修复它(添加任何内容,删除任何内容,编辑无论如何)并将其全部写回文件中。