我写了一个 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;
}
}