Проверка целочисленного типа в C++

Для проверки целочисленного типа в C++ можно использовать несколько методов. Вот некоторые распространенные подходы:

  1. Использование функции isdigitиз библиотеки :

    #include <cctype>
    bool isInteger(const std::string& str) {
    for (char c : str) {
      if (!std::isdigit(c))
         return false;
    }
    return true;
    }

    Этот метод проверяет, является ли каждый символ в строке strцифрой.

  2. Использование функции strtolиз библиотеки :

    #include <cstdlib>
    bool isInteger(const std::string& str) {
    char* end;
    std::strtol(str.c_str(), &end, 10);
    return (*end == '\0');
    }

    Этот метод пытается преобразовать строку strв длинное целое число с помощью strtol. Если преобразование прошло успешно и endуказывает на нулевой символ, строка считается допустимым целым числом.

  3. Использование регулярных выражений с библиотекой :

    #include <regex>
    bool isInteger(const std::string& str) {
    std::regex integerRegex("^-?[0-9]+$");
    return std::regex_match(str, integerRegex);
    }

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

  4. Использование собственной реализации:

    bool isInteger(const std::string& str) {
    if (str.empty())
      return false;
    size_t start = (str[0] == '-') ? 1 : 0;
    for (size_t i = start; i < str.length(); ++i) {
      if (!std::isdigit(str[i]))
         return false;
    }
    return true;
    }

    Этот метод вручную проверяет каждый символ в строке на наличие цифр, учитывая необязательный отрицательный знак в начале.