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

Avoid contents of an existing file to be overwritten when writing to a file

本文关键字:文件 覆盖      更新时间:2023-10-16

我正在尝试制作一款实现高分的游戏。txt文件。我的问题是:当我做这样的陈述时:

ofstream fout("filename.txt");

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

问题是,每当我重新启动程序并执行以下语句时:

fout << score << endl << player; 

会覆盖我之前的分数!

当我写入文件时,是否有任何方法可以使新分数不覆盖旧分数?

std::ofstream默认创建新文件。您必须创建带有append参数的文件。

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

如果您只是想在文件末尾追加内容,那么您可以以追加模式打开文件,这样任何写入都在文件末尾完成,而不会覆盖先前存在的文件内容:

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

如果您想用数据覆盖特定的文本行,而不是仅仅用追加模式将它们添加到末尾,那么您可能最好读取文件并解析数据,然后修复它(添加任何内容,删除任何内容,编辑任何内容)并将其全部重新写回文件。