C ++如何用c ++覆盖文本文件中的数据?

时间:2017-07-06 21:07:38

标签: c++ fstream overwrite

#include<iostream>
#include<fstream>
using namespace std;
string dataFile = "data.txt";
int counter;

int main()
{
    string input ="";
    fstream data;
    data.open(dataFile, ios::app | ios::out | ios::in );
    getline(data, input);
    if (input == "")//The file must be new
    {
        counter = 0;
    }else {
        counter = stoi(input);
    }

    /*
        Program does some stuff that increases the counter
        Right before program ends we update the file
    */
    data.clear();
    data << counter;
    data.close();
    return 0;
}

所以这只是一些示例代码。第一次运行程序时,计数器从0开始,这是准确的。假设你在游戏中获得了10分。游戏结束时你的计数器将是10,并且存储到文件中没问题。所以让我们重新打开应用程序,你看到计数器是10,很酷,这次你获得6分。所以在游戏中,计数器读取16.在应用程序关闭之前,16写入data.txt。

在data.txt里面它读取1016,这是不准确的!

在将准确的计数器信息写入文件之前,如何清除data.txt中的文本?

我在其他地方读到你无法使用fstream清除文件的内容,是否有更有效的方法来覆盖文件中的数据?

谢谢。

1 个答案:

答案 0 :(得分:2)

将文件读入内存。更新值。重写文件。