Что должен делать cin.clear()
? Это должно сбросить любую ошибку
состояние на входе, но, надеюсь, вход не находится в состоянии ошибки.
(В противном случае вы пытаетесь открыть файл без имени.) Неопределенный файл.)
Что касается изменяющегося поведения программы, я подозреваю, что это
связано с тем, как система (или библиотека) буферизует ввод.
cin >> fileName
обычно не возвращается, пока вы не введете новую строку;
однако он не удалит символ новой строки из входного потока.
В зависимости от того, как ввод буферизуется, это может привести к его блокировке.
(хотя я не думаю, что это должно). При попытке зацикливаться на запрос
вход, вероятно, лучше использовать std::getline
, а затем извлечь
информация, которая вам нужна из строки, которую вы прочитали. (В этом случае просто
возможно, будет достаточно удалить пустое пространство на обоих концах.)