C ++ Открытие потока файлов - PullRequest
0 голосов
/ 06 февраля 2012

Так что мне в основном нужна моя программа, чтобы открыть файл и что-то сделать.Когда программа просит пользователя ввести имя файла, а пользователь правильно вводит имя файла в первый раз, операция работает.Но если пользователь набрал неправильное имя, программа говорит «попробуй еще раз неверное имя», но тогда он не сможет открыть файл, даже если пользователь введет имя правильно.Вот код:

ifstream read_file(file.c_str());
while(true)
{
    if(!(read_file.fail()))
    { 
        ...
    }
    else 
    {
        cout << "Either the file doesn't exist or the formatting of the file is incorrect. Try again.\n>";
    }
    cin >> file;
    ifstream read_file(file.c_str());
}

В чем проблема, есть мысли?Спасибо

1 Ответ

5 голосов
/ 06 февраля 2012

Вы переделываете read_file внутри цикла, но код в верхней части цикла всегда использует read_file вне цикла.

Это то, что вы хотите вместо этого:

ifstream read_file(file.c_str());
while(true)
{
    if(!(read_file.fail()))
    { 
        ...
    }
    else 
    {
        cout << "Either the file doesn't exist or the formatting of the file is incorrect. Try again.\n>";
    }
    cin >> file;
    read_file.open(file.c_str()); /// <<< this has changed
}
...