Данные не сохраняются в текстовом файле (библиотека C++ Fstream)
Я пытался сохранить счет игрока в игре в текстовом файле, но это не так. Это код, который я использую:
//some code above
std::fstream TextScore ("Ranking.txt");
// some code above
if (Player->getFinal(Map) == true)
{
TextScore.open("Ranking.txt", ios::out);
TextScore << Player->getPoints();
TextScore.close();
//some code below
}
Затем я проверяю текстовый файл и ничего не было сохранено, файл пуст. Я хотел бы знать, что я пропускаю или делаю неправильно.
Заранее спасибо.
2 ответа
std::fstream TextScore ("Ranking.txt");
Это открывает файл, как будто TextScore.open("Ranking.txt"), std::ios::in|std::ios::out)
назывался.
TextScore.open("Ranking.txt", std::ios::out);
Это открывает это снова.
Комбинация не будет работать, если файл уже существует. Первое открытие будет успешным, а второе - неудачным. После этого все операции ввода-вывода завершатся неудачно. Откройте его только один раз, либо в конструкторе, либо в отдельном open
вызов. Самый идиоматический способ C++ был бы
{
std::fstream TextScore ("Ranking.txt", std::ios::out);
TextScore << Player->getPoints();
}
Нет необходимости явно закрывать файл благодаря RAII.
Открытие одного и того же файла дважды наверняка вызовет проблемы. Переместить определение TextScore
в тело if
заявление вместо вызова TextScore.open()
, И тогда вы можете удалить звонок TextScore.close()
; деструктор закроет файл.