私は switch ステートメントを作成し、ユーザーが間違ったオプションを選択して入力を繰り返すだけのデフォルトを作成しました。問題が発生した場合に最初にバッファをクリアすることを確認したかったので、cin.sync() を使用しましたが、入力に「a」を入力すると、依然として無限ループが発生しました。私は cin.clear() を追加してフラグをクリアし、コードを動作させました...しかし、私の混乱はそれが機能した理由です。失敗フラグがある場合、cin.sync() は機能しませんか?
ステートメントは次のとおりです。簡潔にするために切り捨てられています。
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;
}
}