我編寫了以下代碼來檢查輸入(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'稍後失敗的原因。 –