Ich schrieb den folgenden Code, um zu überprüfen, ob die Eingabe (Antwort3) eine Zahl oder eine Zeichenfolge ist, wenn es keine Zahl ist, sollte es nur "Zahlen eingeben" zurückgeben das Gleiche auch für Zahlen. Bitte schlage mir eine Lösung vor.Überprüfen Sie, ob die Eingabe eine Zahl oder Zeichenfolge in C++ ist
#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;
}
Stimmt etwas mit der Eingabetaste auf Ihrer Tastatur nicht? Die Leertaste scheint ebenfalls zweideutig zu sein. –
'isdigit' nimmt ein einzelnes Zeichen als' int', interpretiert es als ASCII-Zeichen und gibt einen Wert ungleich Null zurück, wenn es ein Ziffernzeichen ('0' bis '9', ASCII 48 bis 57) oder ist Null, wenn es nicht ist. Es kann Ihnen nicht sagen, ob Sie eine Ganzzahl in 'answer3' gelesen haben. –
Ferner, 'cin >> someIntVariable' verwirft führende Leerzeichen, liest ein optionales Zeichen (' -' oder '+'), gefolgt von einer Folge von Ziffern, und stoppt am ersten Zeichen ohne Ziffer. Wenn also jemand etwas eingibt, das nicht interpretiert werden kann, wird die Variable auf 0 gesetzt. Deshalb scheitert "isdigit" später. –