在我看来,如果输入不是整数,循环将启动,并等待用户的下一个输入。但是,以下代码循环使用“value for a”,并且用户无法输入其他输入。
#include<iostream>
using namespace std;
int main()
{
int a;
do{
cout <<"Value for a: ";
cin >>a;
}
while(cin.fail());
return 0;
}
答案 0 :(得分:5)
当用户输入错误输入时,cin
的错误状态设置。在清除错误状态之前,您无法从cin
读取任何内容。
你必须:
cin.clear()
清除错误状态,然后cin.ingore()
以忽略其余部分。你需要的是:
do {
cout <<"Value for a: ";
if ( cin >> a )
{
// Input was successful.
break;
}
// Clear the error state of the input stream.
cin.clear();
// Ignore the rest of the line.
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
} while (true);
并添加
#include <limits>
能够使用std::numeric_limits