Существует ли функция isdigit (перегрузка), которая содержит отрицательный символ?

Я пытаюсь найти начало номера. isdigit Есть ли функция, которая может включать в себя негативы в isdigit? Чтобы он соответствовал первому символу числа: «-13»?

1

Решение

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

Если - был выпущен в isdigit тогда можно было бы ожидать, что некоторые люди захотят + быть включенным тоже, и, возможно, даже ( а также ) чтобы бухгалтеры были довольны

Итак, подведем итог: проверка, является ли что-то представлением числа, является совершенно другим зверем, чем проверка того, является ли определенный символ цифрой.

3

Другие решения

Нет, но сделать тривиально

bool my_isdigit(unsigned char ch)
{
return ch == '-' || std::isdigit(ch);
}

Если вы думаете о том, что такое цифра, это имеет смысл. Согласно стандарту цифра определяется как [0-9] и как подробно Вот, На самом деле в C ++ нет никаких отрицательных литералов. Это положительное число, которое получает одинарное operator - применяется к нему.

2

Нет потому что std::isdigit только для проверки, если один символ является (десятичной) цифрой или нет, а не числом.

Если вы хотите проверить, содержит ли строка допустимое число (отрицательное или нет), то вы можете либо попытаться разобрать его самостоятельно (на самом деле это довольно тривиально), либо использовать, например, std::stoi (и семейство), которые помимо преобразования (которое можно отбросить в результате) также включают проверку входной строки.

1
По вопросам рекламы [email protected]