我有一个有符号的整数变量 当我在main中执行此操作时,它也为整数值提供了“Error”。
int main(){
unsigned int a;
while(cin>>a){
if(!isdigit(a)){
cout<<"Error"<<endl;
}
}
}
[编辑]: 感谢所有回复,我理解了这个问题。现在,我如何检查cin是否只读取整数而不是字母或任何其他字符。在c ++中是否有任何功能。感谢
答案 0 :(得分:3)
问题是isdigit()
需要一个字符,而不是一个整数。
当字符为'0'
,'1'
等时,它返回true ...其ascii值为48
,49
等......
请尝试这种方式:
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;
}