C ++数字输入验证

时间:2010-10-29 06:34:19

标签: c++ visual-c++

我需要使用getch()验证用户输入,仅接受数字输入


`int input_put=getch();`

    if(input >=0 && < 9){ 

}else{


}

3 个答案:

答案 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