1

我正在尝试搜索数字的开头。isdigit是否有一个可以包含负数的isdigit函数?这样它就会匹配数字的第一个字符:“-13”?

4

3 回答 3

4

不,没有。数字是一个包含数字表示的事物,以及基数、符号、小数分隔符、千位分隔符,也许还有其他事物,例如指数。

如果-被发送到isdigit,那么您可能会期望一些人也希望被包括在内,+甚至可能会让会计师感到高兴。()

所以总而言之,测试某物是否是数字的表示与测试特定字符是否是数字是完全不同的野兽。

于 2018-10-12T13:30:08.353 回答
2

没有,但做一个很简单

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

如果您考虑一下数字是什么,这是有道理的。根据标准,一个数字被定义为[0-9],并且如此处详述 C++ 中实际上没有任何负字面量。它是一个正数,将一元operator -应用于它。

于 2018-10-12T13:20:33.753 回答
1

不,因为std::isdigit仅用于检查单个字符是否为(十进制)数字,而不是数字。

如果您想检查一个字符串是否包含有效数字(是否为负),那么您可以尝试自己解析它(这实际上很简单)或使用std::stoi除转换之外的 eg(和家庭)(您可以丢弃的结果)还包括对输入字符串的验证。

于 2018-10-12T13:22:10.653 回答