0

使ってます

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
4

1 に答える 1

3

問題はcin >> choice;、入力ストリームに改行が残るため、getline(cin, str);その改行のためにすぐに戻ることです。

cin.ignore();の後にa を追加してcin >> choice;、改行文字を消費してみてください。

于 2012-11-21T07:28:45.670 に答える