В C ++ Как я могу определить разницу между целыми числами и символами? - PullRequest
1 голос
/ 25 февраля 2011

В настоящее время я изучаю C ++, и меня попросили создать программу, которая будет рассчитывать проценты, которые будут выплачиваться на депозит определенного размера. Одним из требований является отображение сообщения об ошибке при вводе нецелых данных.

Однако я не могу понять, как определить, были ли введены нецелые данные. Если бы кто-нибудь мог привести пример того, как эта проблема решена, он был бы очень признателен!

Ответы [ 3 ]

12 голосов
/ 25 февраля 2011

Вам не нужно проверять себя. Выражение (std::cin >> YourInteger) оценивается как логическое значение, которое истинно тогда и только тогда, когда YourInteger было успешно прочитано. Это приводит к идиоме

int YourInteger;
if (std::cin >> YourInteger) {
  std::cout << YourInteger << std::endl;
} else {
  std::cout << "Not an integer\n";
}
0 голосов
/ 25 февраля 2011

это должно быть достаточно четкой отправной точкой.

char* GetInt(char* str, int& n)
{
    n = 0;
    // skip over all non-digit characters
    while(*str && !isdigit(*str) )
        ++str;
    // convert all digits to an integer
    while( *str && isdigit(*str) )
    {
        n = (n * 10) + *str - '0';
        ++str;
    }
    return str;
}
0 голосов
/ 25 февраля 2011

Вам необходимо выяснить, содержит ли входное значение не числовые символы.То есть, что угодно, кроме 0-9.

Вы должны сначала принять ввод как строку, а затем проверить, является ли каждая цифра действительно числовой.является допустимой цифрой, использующей встроенную функцию isdigit (), определенную в <cctype>.Вы также можете использовать одну запятую, если работаете с десятичными числами.

...