【发布时间】:2014-03-15 11:37:44
【问题描述】:
我编写了以下代码来检查 input(answer3) 是数字还是字符串,如果不是数字,则应返回“仅输入数字”,但即使对于数字,它也会返回相同的结果。请给我一个解决方案。
#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后来失败的原因。 -
在
integer上调用isdigit是没有意义的,除非您准确知道整数成为数字意味着什么.
标签: c++ string integer user-input string-conversion