Я пытаюсь найти начало номера. isdigit
Есть ли C ++ функция, которая может включать в себя негативы в isdigit
? Чтобы он соответствовал первому символу числа: «-13»?
Нет, нет цифра это одна вещь, которая включает в себя представление числа вместе с основанием, знаком, десятичным разделителем, разделителем тысяч и, возможно, другими вещами, такими как экспонента.
Если -
был выпущен в isdigit
тогда можно было бы ожидать, что некоторые люди захотят +
быть включенным тоже, и, возможно, даже (
а также )
чтобы бухгалтеры были довольны
Итак, подведем итог: проверка, является ли что-то представлением числа, является совершенно другим зверем, чем проверка того, является ли определенный символ цифрой.
Нет, но сделать тривиально
bool my_isdigit(unsigned char ch)
{
return ch == '-' || std::isdigit(ch);
}
Если вы думаете о том, что такое цифра, это имеет смысл. Согласно стандарту цифра определяется как [0-9]
и как подробно Вот, На самом деле в C ++ нет никаких отрицательных литералов. Это положительное число, которое получает одинарное operator -
применяется к нему.
Нет потому что std::isdigit
только для проверки, если один символ является (десятичной) цифрой или нет, а не числом.
Если вы хотите проверить, содержит ли строка допустимое число (отрицательное или нет), то вы можете либо попытаться разобрать его самостоятельно (на самом деле это довольно тривиально), либо использовать, например, std::stoi
(и семейство), которые помимо преобразования (которое можно отбросить в результате) также включают проверку входной строки.