0

我想用输入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;
         }

       }
}
4

1 回答 1

1

假设您的代码 x 是一个整数,如果输入本身不是整数,则格式化为整数的输入将失败。因此,如果您输入 'y' 或 'r' (并因此设置故障位), cin >> x 将失败。您可以将 x 更改为字符或字符串,并在确定它为 1 后使用 atoi 将其转换回整数。

于 2013-11-06T22:20:14.140 回答