我写了一个switch语句,并创建一个默认这将简单地说,用户选择了一个错误的选项,并重复输入。 我想确保,如果存在这样的问题,那就先清除缓冲区,所以我用cin.sync(),但进入一个“一”为输入还是造成了一个无限循环。 我加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;
}
}