C++ Как переписать данные в текстовом файле в C++?

#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 ответ

Прочитайте файл в память. Обновите значения. Перепишите файл.

Другие вопросы по тегам