У меня есть код, который мне кажется лишним:
char c;
cin>>c;
if(cin&&c=='n')
//do something
Я не понимаю ценности использования cin в if. Разве он не всегда будет иметь значение TRUE, поскольку я никогда не встречал ни одного случая (в моем ограниченном опыте ), где этот объект istream не создается.
Точно так же я видел это:
if(cin)
Пожалуйста, поправьте меня, в чем я ошибаюсь. Теперь люди не публикуют часть ошибки в потоке, как я уже знаю, основная часть - это когда происходит сбой потока, кроме сбоя ios_base :: Init
int x, cin >> x;
с пользовательским вводом FUBAR !, который не может быть преобразован вint
. Сchar
немного сложнее. - person user4581301   schedule 19.07.2017cin
не находится в состоянии ошибки, когда он не построен. Он находится в плохом состоянии, когда обнаруживает ошибки при извлечении данных. Примером того, как он может потерпеть неудачу в вашем фрагменте, является то, что он встречает конец файла, например, если входные данные вашей программы передаются из файла или из другой программы, которая завершилась. - person François Andrieux   schedule 19.07.2017