Überprüfen, ob die Eingabe eine Zahl oder einen string in C++

Schrieb ich den folgenden code, um zu überprüfen, ob die Eingabe(answer3) ist eine Zahl oder einen string, wenn es nicht eine Zahl zurückgegeben werden soll "Geben Sie Nur Zahlen", aber gibt es das gleiche auch für zahlen. Bitte empfehlen Sie mir eine Lösung.

#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;  

}
Gibt es etwas falsch mit der enter-Taste auf Ihrer Tastatur? Die Leertaste scheint dodgy wie gut
isdigit nimmt ein einzelnes Zeichen als int, interpretiert es als ein ASCII-Zeichen um und gibt einen Wert ungleich null, wenn es eine Ziffer ('0' bis '9', ASCII 48 bis 57) oder null, wenn es nicht. Es hat keine Möglichkeit, Ihnen zu sagen, wenn Sie Lesen eine integer in answer3.
Weiter cin >> someIntVariable verwirft führenden Leerzeichen, liest einem optionalen Vorzeichen (- oder +), gefolgt von einer Folge von Ziffern, anhalten an der ersten nicht-Ziffer-Zeichen. Also, wenn jemand etwas, das nicht interpretiert werden, setzt es die variable auf 0. Das ist der Grund, warum isdigit höher ausfällt.
Es macht keinen Sinn zu rufen isdigit auf eine integer es sei denn, Sie wissen, genau, was es bedeutet, eine ganze Zahl zu sein eine Ziffer.

InformationsquelleAutor WESTRUK | 2014-02-16

Schreibe einen Kommentar