isdigit()是不是在一个简单的程序中工作?

时间:2016-11-17 23:05:09

标签: c++ encoding turbo-c++ character-class

#include<iostream.h>
#include<conio.h>
#include<ctype.h>
void main()
{
    clrscr();
    int a;
    cout<<"Enter a digit";
    cin>>a;
    if(isdigit(a))
    {
         cout<<"You have entered a digit";
    }
    else
    {
         cout<<"Not a digit";
    }
    getch();
}

代码显示没有错误,但每次输入数字时都显示&#34;不是数字&#34;。

2 个答案:

答案 0 :(得分:2)

int a;
std::cin >> a;

此代码(或您稍微过时的变体)从控制台读取文本并将该文本转换为整数值。因此,如果您在控制台中输入0a的值将为0,而不是'0'isdigit告诉您传递给它的字符值是否代表数字,0不代表数字,因此结果几乎肯定是正确的。如果您将值读入char类型的变量,您将获得您期望的行为。

char a;
std::cin >> a;

答案 1 :(得分:2)

使用cin>>a提取整数,将从输入中读取一个数字(几位数)并将其转换为二进制值。

例如,如果您输入10,则a的值将为10.如果您将此值解释为isdigit(a)中的字符,则将其理解为ascii / ansi / utf8相当于10,为'\n',这显然不是数字。

要获得您期望的结果,请将a设为char。