Какая разница между однократным и двойным открытием "fstream" в c ++ (в первом случае ввод не работает)? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть файл "input file.txt":

Hello

У меня есть следующий код:

fstream ff;
ff.open("input file.txt");
ff.open("input file.txt", ios::in);
for (string s; ff >> s; cout << s)
    ;

, который выводит:

<empty>

и второй код (есть одно изменение):

fstream ff;
//ff.open("input file.txt");
ff.open("input file.txt", ios::in);
for (string s; ff >> s; cout << s)
    ;

который выводит:

Hello

Вопрос в том, почему?

1 Ответ

2 голосов
/ 10 апреля 2020

Если поток уже связан с файлом (т. Е. Он уже открыт), вызов этой функции (open()) завершится неудачно: http://www.cplusplus.com/reference/fstream/fstream/open/

Итак, ваш второй вызов выходит из строя. Отсюда и результат, который вы получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...