Я пишу игру на C ++ с использованием OpenGL, и у меня возникают проблемы с использованием файловых потоков для импорта результатов в файл и их экспорта в программу для отображения.
У меня есть следующие функции для импорта и экспорта рекордов: (какой-то код был там, где я пытался отладить проблему)
void DisplayScores(void) // is going to be called by LoadHighScores()
{
glRasterPos2i(HighScore::x, HighScore::y);
printString(lineholder);
HighScore::y -= 15;
std::cout << "lineholder before being cleared: " << lineholder << std::endl;
lineholder = "";
}
void LoadScores(void) // Loads the high scores // called when the high scores option on the main menu has been selected
{
std::ifstream scorelist("scorelist.txt");
while (!scorelist.eof())
{
scorelist.get(getletter);
switch(getletter)
{
case '\n': DisplayScores(); break;
default: lineholder = lineholder + getletter; break;
}
}
scorelist.close();
}
void AddScore(char* name, int score) // takes arguments of the name of the player who has just played the game and their score is also passed and copied to the config file
{
std::ofstream addscore("scorelist.txt", std::ios::app);
addscore << name; // name of the player achieving the score
addscore << ":"; // if addscore.get() == ':' you know the score is going to come after this
addscore << score;
addscore << std::endl; // end the line in the text file so when you encounter '\n' you know you need to translate to a new line to display someone elses score
addscore.close();
}
и следующий фрагмент кода, который использует функции: (оператор else является частью ветви главного меню, которая вызывается, если не было выбрано «Play»)
else
{
// display the high scores here
std::cout << "in the else statement";
LoadScores();
AddScore("this", 20);
}
Когда я собираю программу, я просто получаю «В операторе else», но ничего незаписывается в файл результатов, и, по-видимому, тоже не вызывается DisplayScores ().
текстовый файл просто содержит следующее:
Nick 10
Jason 50