C ++: Как я могу сделать целочисленный фильтр только с библиотекой <iostream>? - PullRequest
0 голосов
/ 01 декабря 2018

(у меня немного английского словаря, так что извините за эту странную попытку английского)

Привет, ребята!Я новичок в C ++, и мне нужно знать, как создать код фильтра, который поможет мне принимать только int - eger .Мне нужно, чтобы этот код использовал только библиотеку iostream.Это потому, что мой учитель не позволяет нам использовать другой вид библиотеки (мы новички в кодировании C ++).


Здесь я привожу пример того, что у меня есть в данный момент:

 # include <iostream>
 # include <limits> //I should't use this library

using namespace std;
int main() {

   int value = 0;

   cout << "Enter an integer value: ";
   while(!(cin >> value)) {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << endl <<"Value must be an integer"<< endl << endl; //This line needs <limits>
        cout << "Enter another integer value: " ;
   }
}

Но у этого кода есть некоторые неудобства:

  1. Я использую библиотеку "#include 'limit'" и не должен использовать ее
  2. Если вы введете "1asd "принимает значение" 1 ", задайте его как правильное и неверное

У вас, ребята, есть какое-то решение для этой ситуации?Заранее спасибо за ваше время.

1 Ответ

0 голосов
/ 01 декабря 2018

Вам просто нужно проверить, являются ли введенные пользователем байты цифрами, как показано ниже.Если все байты введенной строки являются цифрами (то есть между символами 0 и 9), то вся строка является целым числом.За исключением первого байта строки может быть '+', '-', пробел / табуляция или просто первая цифра в числе.(Спасибо, Zett42).

std::cout << "Enter an integer value: ";
std::string res1;
std::cin >> res1;
std::string::iterator it;
for ( it = res1.begin() ; it < res1.end(); it++)
{   std::cout << "checking " << *it << ' ';
    if (!( '0' <= *it && *it <= '9' )) {
        std::cout << "this is a numeral\n";
    } else {
        std::cout << "you entered: " << *it << " -- this is *not* a numeral\n";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...