我编写了以下代码来检查输入(answer3)是数字还是字符串,如果它不是数字,它应该返回“仅输入数字”,但它会返回即使是数字也是如此。请给我一个解决方案。检查输入是否是C++中的数字或字符串
#include <iostream>
#include <string>
#include <typeinfo>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;
int main()
{
string ques1= "Client's Name :";
string ques2 = "Client's Address :";
string ques3 = "Mobile Number :";
char answer1 [80];
string answer2;
int answer3;
cout<<ques1<<endl;
cin>>answer1;
cout<<ques2<<endl;
cin>>answer2;
cout<<ques3<<endl;
cin>>answer3;
if (isdigit(answer3))
{
cout<<"Correct"<<endl;
}
else
{
cout<<"Enter Numbers Only"<<endl;
}
system("pause>null");
return 0;
}
键盘上的回车键有问题吗? –
'isdigit'将单个字符视为int,将其解释为ASCII字符,如果是数字字符('0'至'9',ASCII 48至57),则返回非零值如果不是,则为零。如果您将一个整数读入'answer3',它无法告诉您。 –
此外,'cin >> someIntVariable'丢弃前导空格,读取一个可选符号('-'或'+'),后跟一串数字,停在第一个非数字字符处。所以如果有人输入了一些无法解释的东西,它会将变量设置为0.这就是为什么'isdigit'稍后失败的原因。 –