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 ответ
Прочитайте файл в память. Обновите значения. Перепишите файл.