getline (cin, var) не работает! - PullRequest
0 голосов
/ 14 апреля 2011

По какой-то странной причине функция getline () не работает должным образом.У меня есть цикл программы через рекурсию (возврат main ();).При первом запуске следующего кода это нормально.

cout << "Enter a phrase: ";
string user;
getline(cin, user);

Однако после вызова рекурсии программа пропускает шаг, который позволяет мне печатать.В результате строка user пуста.Есть идеи почему?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 14 апреля 2011

Рекурсивный вызов main плохо определен в C ++ (это в C).Это может быть или не причиной вашей проблемы.

4 голосов
/ 14 апреля 2011

вызов cin.clear(), чтобы очистить все флаги перед циклом.

РЕДАКТИРОВАТЬ: Благодаря @Xeo за указание, следует также вызвать cin.ignore(), чтобы сбросить символ новой строки - который все еще может быть вбуфер ...

...