Для проверки целочисленного типа в C++ можно использовать несколько методов. Вот некоторые распространенные подходы:
-
Использование функции
isdigit
из библиотеки
:#include <cctype> bool isInteger(const std::string& str) { for (char c : str) { if (!std::isdigit(c)) return false; } return true; }
Этот метод проверяет, является ли каждый символ в строке
str
цифрой. -
Использование функции
strtol
из библиотеки
:#include <cstdlib> bool isInteger(const std::string& str) { char* end; std::strtol(str.c_str(), &end, 10); return (*end == '\0'); }
Этот метод пытается преобразовать строку
str
в длинное целое число с помощьюstrtol
. Если преобразование прошло успешно иend
указывает на нулевой символ, строка считается допустимым целым числом. -
Использование регулярных выражений с библиотекой
:#include <regex> bool isInteger(const std::string& str) { std::regex integerRegex("^-?[0-9]+$"); return std::regex_match(str, integerRegex); }
Этот метод использует шаблон регулярного выражения для сопоставления всей строки с шаблоном, представляющим целое число. В начале допускается необязательный отрицательный знак.
-
Использование собственной реализации:
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; }
Этот метод вручную проверяет каждый символ в строке на наличие цифр, учитывая необязательный отрицательный знак в начале.