在while循环中调用getline(cin,str)时遇到问题

时间:2012-11-21 07:09:55

标签: c++

我正在使用

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

从字符串类型的用户获取输入。代码工作得很好。但现在不知怎的,在一个while循环中,它没有被调用。也就是说,编译器似乎跳过了这一部分。

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

1 个答案:

答案 0 :(得分:3)

问题是cin >> choice;在输入流中留下换行符,因此getline(cin, str);会因换行符而立即返回。

尝试在cin.ignore();之后添加cin >> choice;以使用换行符。