如何判断输入时是不是数字(输入是非数字或者输入为负数则跳出while循环)

C++中cctype头文件中的isdigit()函数如果参数是0~9,则函数返回true,这个函数只能判断是个数么?如果我要判断两位数、三位数......还能用么?
while(cin>>num) 其中num为整形变量,其中括号中的语句可以判断输入是不是数字?是怎么样的原理?
还有其他方法么?ASCII怎么用呢?

 cin>>num肯定是数字
while (cin>>num)
{
    if (num < 0) break;
}

因为num类型定义了。cin输入的时候就会判断。它需要把你输入的转换为num,所以类型不对就会转换失败。

 内部原理
while (c = getchar())
{
    if (c >= '0' && c <= '9')
        {
            num *= 10;
                num += (c - '0');
        }
        else
        {
        出错
        }
}

输入前定义了类型,如果输入的不是数字,程序会将字符处理成它的ASCII码

用ASC码判断,不是就退出