Почему cin.get () застревает на символах перевода строки? - PullRequest
1 голос
/ 28 апреля 2020

Код:

char s[20];
cout<<"enter ur name"<<endl;
cin.get(s,20);
cout<<s<<endl;

char s2[30];
cout<<"enter ur name again"<<endl;
cin.get(s2,30);
cout<<s2<<endl;

char s3[40];
cout<<"enter ur name once again"<<endl;
cin.get(s3,40);
cout<<s3<<endl; 
return 0;   

Вывод:

enter ur name
Albert Einstein
Albert Einstein
enter ur name again

enter ur name once again

Если я введу «Альберт Эйнштейн» в s, а затем нажму enter, я знаю, что s2 получит символ новой строки (присутствует в потоке из-за предыдущего нажатия клавиши ввода). Теперь поток пуст. Почему s3 не принимает вход fre sh? Почему s3 также принимает символ новой строки, если я больше не нажимал клавишу ввода?

1 Ответ

1 голос
/ 28 апреля 2020

Per cplusplus.com , get() оставляет завершающий символ новой строки в потоке:

Символ-разделитель не извлечен из входной последовательности если найден, и остается там как следующий символ, который будет извлечен из потока (см. getline для альтернативы, что действительно отбрасывает символ-разделитель).

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