如何验证整数输入
How can I validate an integer input
例如,我有代码:
#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
语句。我怎么能忽略所有输入并只接受其中的纯数字?
您可以使用
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
迭代器。
相关文章:
- 正在验证c++中用户的整数输入
- 如何用字符终止整数输入循环?
- 以C++为单位将已知数量的整数输入正确读取到向量中
- C++ - 重复 std::getline() 作为用户整数输入?
- C++程序,将整数输入转换为字符的问题
- 将整数输入数组的方法比 scanf() 或 cin 更快?
- 程序终止,而不是继续整数输入验证循环
- 如何在C 中输入未知数的整数输入
- 在C 中遇到了如何从用户输入直到输入的整数输入
- C++ 通过 range for 循环将整数输入到矢量中;随机 0
- 如何在 C++ 中包含整数输入的前面的 0
- 仅接受整数输入
- 拒绝用户整数输入 c++ 中的某个值
- 我想通过scanf将字符和整数输入到结构中
- 此代码段如何验证整数输入
- 验证整数输入C++?
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- 整数输入 拒绝非整数输入并在C++中请求另一个输入
- 如何保存用户的整数输入,并返回字符串值?
- 除 "6" 作为最右边数字的整数输入外,任何整数输入都可以使用,但任何数字(如 ...6.导致分段错误,为什么?