Top.Mail.Ru
Ответы

Функция getline() для ввода строки. c++

Почему функция getline() работает только в основном коде. Т. е. если я её использую для ввода строки в if, switch или процедуре, то она просто пропускается, как будто её нет.

Дополнен

Если я перед использованием getline() использую cin, то getline() работает до первого пробела с конца, т. е. последнее слово и пробел выводит

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок

deleted

Аватар пользователя
Высший разум

int x;
cin >> x;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
string line;
getline(cin, line);

P.S. Всё дело в том, что пользователь вводя числовое значение либо одиночный символ может ввести избыточные символы в поток ввода, которые ожидают своего дальнейшего считывания, в то время как getline считывает строку до самого конца. После ввода числа либо отдельного символа там всегда остаётся, как минимум, код клавиши Enter. Если после этого встретится getline, то она его проглотит, хотя и отбросит. Это аналогично вводу пустой строки без перевода её на другую строку. Лишнее следует очищать. cin.ignore вам в помощь.