@Del0v
Студент

Что происходит с оставшейся информацией в потоке?

Привет.

Пишу следующий код:
char str1[5];
char str2[3];

cin.getline(str1, 5);
cin.getline(str2, 3);

cout<<endl<<"str1 = "<<str1;
cout<<endl<<"str2 = "<<str2<<endl;


Запускаю программу и ввожу следующее:
4444 33

Вывод:
str1 = 4444
str2 =


Я ожидал, что после ввода поток заполнен так: 4444 33\n.
Значит в str1 запишется 44443, так как в str15 ячеек, а первый пробел игнорируется(удаляется ли из потока?), значит в потоке останется 3\n.
В str2 поместится 3, а символ \n - является разделителем по умолчанию, и не записывается в str2, но и удаляется из потока.

Почему же второй вызов getline ничего не записал в str2? Если после первого считывания в потоке должна остаться информация: 3\n?

Если я правильно понимаю, первый пробел не считывается из потока, так как воспринимается как разделитель. Он удаляется из него, или остаётся?
Заранее спасибо.
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vanyamba-electronics
Функция getline() читает информацию до конца строки, остальное игнорируется.
Попробуйте так:
cin >> str1 >> str2;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы