我正在尝试实现一个简单的游戏,要求用户输入 0 到 10 之间的 2 个有效整数坐标。(int 行,int 列)
我会意识到的一个例子是:
插入坐标:4C
*错误,行数和列数必须是整数
插入坐标:44 2
*错误,行数或列数太高
插入坐标:4 3
你输入的坐标是(4,3)
我通过 do-while 循环实现了所有这些。
int r,c;
do{
cout<<"Insert coordinates: ";
cin>>r>>c;
if (cin.fail())
{
cout << "ERROR: Number of row and column must be integer." << endl << endl;
}
if ((r<0 || r>10) || (c<0 || c>10)
{
cout << "*Error, number of row or column are too high [0-10]" << endl << endl;
}
cout<<endl;
}
while (((r<0 || r>10)||(c<0 || c>10)) || cin.fail());
此代码无法正常工作。如果我输入 0 到 10 之间的 2 个数字,它会起作用。如果我输入一个大于 10 的数字,它也可以。但是如果我输入一个字符,程序就会进入一个无限循环,并且不能正常工作。
如何实现这一点来处理字符输入错误?如果用户输入一个字符,有没有办法识别并保持在 while 循环内?