Cin and getline

Почему после cin getline странно работает? Если ввести только одно слово, то getline пропускается, если ввести через пробел несколько слов, то первое слово идёт в переменную а, а другие слова с пробелом вначале идут в b. Насколько я знаю, cin после себя в буфере ввода оставляет \n, а getline, натыкаясь на него, завершается. Но здесь почему-то другие слова считываются в b.

string a;
cin >> a;
string b;
getline(cin, b);
cout << a << endl;
cout << b << endl;

UPD: cin.ignore(numeric_limits::max(), '\n'); выдает 'требуется идентификатор'


Ответы (1 шт):

Автор решения: Harry

cin >> a считывает одно слово, после чего все остальное до \n считывается в b вызовом getline. Все, как вы описали.

Второй вопрос - о

cin.ignore(numeric_limits::max(), '\n');

numeric_limitsшаблон, так что ему нужно указать тип, для которого вы хотите вызвать max. Например, numeric_limits<streamsize>::max()...

→ Ссылка