答案 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
(和族)除了进行转换(您可以丢弃结果)之外,还包括对输入字符串的验证。