我有下面的代码,所以基本上我的问题是:当有人输入“ a”这样的字符时,它将弹出一条消息,要求重新输入
我尝试使用ASCII:
if (a >= 97 && a <= 122)
,但仍然无法正常工作
double a;
cin >> a;
if (a >= 'a' && a <= 'z')
{
cout << "Wrong input, please re-input a: " << endl;
cin >> a;
}
cout << a;
我希望它弹出重新输入的消息,但无论我输入什么字符,实际的输出始终为0
答案 0 :(得分:1)
可以直接在条件中使用它来检查流的状态。如果一切正常,则“返回” true,否则返回“ false”。这样您就可以做到
if (!(cin >> a))
{
// Invalid input, or other error
}
在输入无效时,您需要clear状态。
请注意,如果输入无效,那么将不会读取输入,并且下次尝试读取时,您将读取与第一次输入完全相同的输入。解决该问题的一种方法是ignore其余部分。另一种方法是read a whole line into a string,然后将其放入input string stream中以解析输入。