Возникли проблемы с вызовом getline (cin, str) в цикле while

я использую

getline(cin , inputStr); // where string = inputStr;

принять ввод от пользователя строкового типа. Код работал отлично. Но теперь, так или иначе, в то время как это не вызывается. То есть компилятор, похоже, пропустил эту часть.

Но cin >> str один работает отлично. Какие-либо предложения?


Код из комментария:

int num, choice;
string inputStr="";
while(1)
{
cout<<"1) Search \n";
cout<<" EXIT\n";
cout<<"Choose your choice : ";
cin >> choice;
switch(choice)
{
case 1:
cout<<"word for search\n";
getline(cin, str);
cout<< str <<endl;
return 0;
//just checking whether this commands work or not.
}
else
{
return 0;
}
.......// there is 300 lines of code still there

0

Решение

Проблема в том, что cin >> choice; оставляет перевод строки во входном потоке, поэтому getline(cin, str); немедленно возвращается из-за этой новой строки.

Попробуйте добавить cin.ignore(); после cin >> choice; потреблять символ новой строки.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector