1
我寫了一個switch語句,並創建了一個默認值,它會簡單地說用戶選擇了一個錯誤的選項並重復輸入。我想確保如果出現問題,它將首先清除緩衝區,因此我使用了cin.sync(),但爲輸入輸入'a'仍導致無限循環。我添加了cin.clear()來清除給我工作代碼的標誌......但是我的困惑是爲什麼它能夠工作。如果出現故障標誌,cin.sync()是否不起作用?爲什麼cin.clear()修復由於輸入到cin的錯誤而導致的無限循環?
聲明如下,截斷爲簡潔:
while(exitAllow == false)
{
cout<<"Your options are:\n";
cout<<"1: Display Inventory\n";
/*truncated*/
cout<<"5: Exit\n";
cout<<"What would you like to do? ";
cin.clear(); //HERE IS MY CONFUSION//
cin.sync();
cin>>action;
switch(action)
{
case 1:
/*truncated*/
case 5:
exitAllow = true;
break;
default:
cout<<"\ninvalid entry!\n";
break;
}
}
謝謝先生。另外,「做一些明智的事情」讓我發笑。 –