Проверка ввода номера в C ++ - PullRequest
0 голосов
/ 29 октября 2010

Мне нужно подтвердить ввод пользователя, используя getch() только для принятия числового ввода


`int input_put=getch();`

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

}else{


}

Ответы [ 3 ]

5 голосов
/ 29 октября 2010

Чтобы лучше всего принимать числовой ввод, вы должны использовать 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";
   ...
 }

Это, безусловно, лучший и самый чистый способ сделать это. Вы также можете легко добавить проверку диапазона.

Полный код здесь .

2 голосов
/ 29 октября 2010
if(input >= '0' && input <= '9')

или:

if(isdigit(input))
1 голос
/ 29 октября 2010

getch возвращает символ код .Код символа для «0» - это 48, а не 0, хотя вместо этого можно использовать символьную константу (так как константы символов действительно целочисленные константы), и это будет более читабельным.Итак:

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

Если вы используете Visual C ++ (как указывают ваши теги), вы можете найти документацию MSDN полезной.Например, вам, вероятно, следует использовать вместо _getch или _getchw, если вы хотите написать программное обеспечение, которое можно использовать более глобально.И в том же духе вы, вероятно, захотите взглянуть на isdigit, isdigitw и т. П. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...