Начинающий C ++ - открытие текстового файла для чтения, если он существует, если нет, создать его пустым - PullRequest
3 голосов
/ 14 мая 2010

Я пишу подпрограмму с высокими оценками для текстовой игры. Вот что у меня есть.

void Game::loadHiScores(string filename)
{
    fstream hiscores(filename.c_str()); // what flags are needed?
    int score;
    string name;
    Score temp;

    if (hiscores.is_open())
    {
        for (size_t i = 0; i < TOTAL_HISCORES && !(hiscores.eof()); ++i)
        {
            cin >> score >> name;
            temp.addPoints(score);
            temp.scoreSetName(name);
            hiScores.push_back(temp);
        }
    }
    else
    {
        //what should go here?
    }   

    hiscores.close();

}

Как мне сделать так, чтобы:

ЕСЛИ файл существует, он должен быть открыт для чтения

В противном случае файл должен быть создан

Спасибо за ваше время

1 Ответ

5 голосов
/ 14 мая 2010

Неправильная логика, я бы сказал. Я думаю, что вы хотите:

Try to open an ifstream (not an fstream) containing scores
if it opened
   read high scores into array
   close stream
else
   set array to zero
endif

Play Game - adjust high scores in array, then on exit

Try to open scores ofstream (not an fstream) for writing
if it opened
    write high scores
    close stream
else
    report an error
end if

Если вы используете ifstreams и ofstreams, вам не нужны специальные флаги или, возможно, необходимость искать в файле - вы просто переписываете все это.

...