如何对 int 变量应用验证,使其仅接受整数数据,并且在任何其他数据的情况下不会出错?



我想将用户的输入限制为仅整数数据。因此,我需要验证整数变量,使其仅接受整数数据,而不接受字母和特殊字符数据。例如,请参阅下面的代码

int a;
cout << "Enter any number: ";
cin >> a;

现在,如果用户输入除整数类型以外的任何数据。它应该给出以下输出,没有任何错误

Enter any number: alphabet
Invalid Input! Try again..
Enter any number:

那么我该如何实现它呢?

如果输入了错误的输入,operator>>设置流的失败状态。您可以在读取后测试流的状态,例如:

#include <iostream>
#include <limits>
int a;
do
{
std::cout << "Enter any number: ";
if (std::cin >> a)
break; // no error, a is valid
std::cout << "Invalid Input! Try again.." << endl;
std::cin.clear(); // reset error state
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n'); // ignore any pending data
}
while (true);
// use a as needed... 

最新更新