我想用输入y做保存的东西,然后用r做恢复,但后来我用下面的代码写,然后我输入y或r,我只是注意到“”请输入两个正数“这行代码”if(x ==(int)('y'))“并忽略下一行。这可能发生这种情况
int main(){
cout<<"It's player_"<<player+1<<"'s turn please input a row and col,to save and exit,input y,resume game input r"<<endl;
while(true){
cin>>x;
if(x==(int)('y')) {save();has_saved=true;break;}
if(x==(int)('r')) {resume();has_resumed=true;break;}
cin>>y;
if(cin.fail()){
cout<<"Please enter two positve numbers"<<endl;
cin.clear();
cin.sync();}
else {
chessboard[x][y]=player_symbol[player+1];
break;
}
}
}
答案 0 :(得分:1)
假设您的代码x是一个整数,如果输入本身不是整数,则格式化为整数的输入将失败。所以,cin&gt;&gt;如果你输入'y'或'r'(因此设置failbit),x将失败。您可以将x更改为char或string,并在确定为一个整数后使用atoi将其转换回整数。