是否有一个包含负号的isdigit函数(过载)?

时间:2018-10-12 13:17:28

标签: c++ string numbers digits string-to-symbol

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

3 个答案:

答案 0 :(得分:3)

不,没有。 数字是一件事,包括数字的表示形式,基数,符号,小数点分隔符,千位分隔符,以及其他可能的内容,例如指数。

如果-被发射到isdigit中,那么您可能会期望某些人也希望将+也包括在内,甚至还有()让会计师满意。

因此,总而言之,测试某物是否代表数字与测试特定字符是否为数字完全不同。

答案 1 :(得分:2)

没有,但是制作一个很简单

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

如果您想知道什么是数字,这是有道理的。根据标准,数字定义为[0-9],详细定义为here,C ++实际上没有负数。它是一个正数,将一元operator -应用于它。

答案 2 :(得分:1)

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

如果您要检查字符串是否包含有效数字(是否为负数),则可以尝试自己解析(实际上很简单),也可以使用例如std::stoi(和族)除了进行转换(您可以丢弃结果)之外,还包括对输入字符串的验证。