我的程序中cin.fail()的c ++问题

时间:2013-11-06 21:49:41

标签: c++ cin

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

       }
}

1 个答案:

答案 0 :(得分:1)

假设您的代码x是一个整数,如果输入本身不是整数,则格式化为整数的输入将失败。所以,cin&gt;&gt;如果你输入'y'或'r'(因此设置failbit),x将失败。您可以将x更改为char或string,并在确定为一个整数后使用atoi将其转换回整数。