我需要使用getch()
验证用户输入,仅接受数字输入
`int input_put=getch();`
if(input >=0 && < 9){
}else{
}
答案 0 :(得分:5)
为了最好地接受数字输入,你必须使用std :: cin.clear()和std :: cin.ignore()
例如,请考虑C++ FAQ
中的此代码 #include <iostream>
#include <limits>
int main()
{
int age = 0;
while ((std::cout << "How old are you? ")
&& !(std::cin >> age)) {
std::cout << "That's not a number; ";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
std::cout << "You are " << age << " years old\n";
...
}
到目前为止,这是最好和最干净的方式。您还可以轻松添加范围检查器。
完整代码为here。
答案 1 :(得分:2)
if(input >= '0' && input <= '9')
或:
if(isdigit(input))
答案 2 :(得分:1)
getch
返回一个字符代码。 “0”的字符代码是48而不是0,尽管您可以使用字符常量(因为字符常量实际上是整数常量)而且可以更具可读性。所以:
if (input >= '0' && input <= '9')
如果您使用的是Visual C ++(如标记所示),您可能会发现the MSDN docs很有用。例如,您可能应该使用_getch
代替_getchw
,如果您想编写可以更全面使用的软件。同样,你可能想看看isdigit
, isdigitw
, and the like。