在c ++中使用isDigit()函数的正确方法

Mil*_*ani 1 c++

我是C++的新手,我学习了一些C语言的基础知识.这是我的代码片段.

#include "iostream"

using namespace std;

int main(){
int a=108;
if(!isdigit(a)){
    cout<<"The number is not a digit";
}
else
cout<<"It's a Number!";
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但它满足条件.它应该输出,It's a Number!请纠正我,如果你有更好的解决方案,建议!(为了更清楚)我想检查输入的int是否实际上由数字组成.谢谢

Chr*_*ckl 5

首先,我不确定你是否意识到数字数字之间存在差异.数字是从0到9的单个字符,数字由数字组成.

其次,std::isigit有一个糟糕,混乱的遗留界面.正如文档将告诉你的那样,它需要一个int但需要它的参数可以表示为unsigned char或EOF以避免未定义的行为.在int你传递给函数表示单个字符; 是否符合ASCII的映射不是C++规定的,因此也是实现定义的.

然而,您的C++实现很可能使用ASCII或其超集.在ASCII中,108是小写字母"l".isdigit因此返回false.