例如,我有代码:
#include <iostream>
using namespace std;
int main()
{
int test = 0;
cout << "Please input a number:";
while(!(cin >> test))
{
cout << "Invalid input";
}
if(test == 1)
{
cout << "Test is 1";
}
else
{
// Do something
}
return 0;
}
如果我将1abc
输入到测试变量,即使输入错误,它仍会继续处理if
语句。我怎么能忽略所有的输入,只接受纯数字?
答案 0 :(得分:2)
您可以使用getline
,find_if_not
和isdigit
来检查整行是否为有效整数。这将循环,直到它读取整数:
std::string number;
while (std::getline(std::cin, number) && number.end() !=
std::find_if_not(number.begin(), number.end(), &isdigit))
std::cout << "gitgud!";
getline
将读取新行的输入,并将其放入字符串中。 find_if_not
和isdigit
会找到第一个非数字字符。如果没有(意味着它是一个有效的整数),它将返回end
迭代器。