与cin的isdigit问题

时间:2011-11-19 23:43:59

标签: c++

我有一个有符号的整数变量 当我在main中执行此操作时,它也为整数值提供了“Error”。

int main(){
    unsigned int a;
    while(cin>>a){
        if(!isdigit(a)){
            cout<<"Error"<<endl;
        }
    }
}

[编辑]: 感谢所有回复,我理解了这个问题。现在,我如何检查cin是否只读取整数而不是字母或任何其他字符。在c ++中是否有任何功能。感谢

3 个答案:

答案 0 :(得分:3)

问题是isdigit()需要一个字符,而不是一个整数。

当字符为'0''1'等时,它返回true ...其ascii值为4849等......

请尝试这种方式:

char a;
while(cin>>a){
    if(!isdigit(a)){

答案 1 :(得分:1)

试试这个:

std::cout << "Is digit : " << isdigit('9');

然后阅读:

http://www.cplusplus.com/reference/clibrary/cctype/isdigit/

如果您仍有问题,请告诉我们。

答案 2 :(得分:1)

如果你想确定你成功阅读了你想要的类型你可以使用istream :: good()

unsigned int a;
std::cin >> a;
if(!std::cin.good()) {
    std::cout << "Error!\n";
} else {
    std::cout << a;
}