2017-01-12 11 views
-4

Ich muss Zeicheneingabe vom Benutzer erhalten, bis er eine Zahl eingibt. Ich brauche auch die zuletzt eingegebene Nummer.Eingabe vom Benutzer erhalten, bis er eine Nummer eingibt

#include <iostream> 
using namespace std; 
int fun() { 
    char c; 
    while(1) { 
     if(cin>>c == 1) { //To check if we are still getting input 
      if(isdigit(c)) { //If a number is found return to the main function 
       return c-48; //Char converted to Int 
      } 
     } 
     else { 
      break; 
     } 
    } 
    return c-48; 
} 

int main() { 
    int a = fun(); 
    cout<<a; 
    return 0; 
} 

nun für die Eingabe wie ahd qer 12 32 gibt es Ausgang als 1 die ich es wissen würde. Was ich für die Ausgabe möchte, ist 12. Wie geht das? Sie können auch einige Änderungen in der Hauptfunktion vornehmen. Ich möchte schließlich die Nummer in der Variablen a gespeichert.

SOLUTION

#include <iostream> 
    using namespace std; 

    int fun() { 
     string c; 
     while(cin>>c) { 
      if(isdigit(c[0])) 
       return stoi(c); 
     } 
    } 

    int main() { 
     int a = fun(); 
     cout<<a<<" "; 
     return 0; 
    } 
+0

@Gyanshu Was Sonderzeichen (zum Beispiel '#'/'$'/etc ..)? Warum benutzt du 'isdigit' nicht, wenn du wissen willst, ob das Zeichen eine Ziffer darstellt? –

+0

Zumindest in C ist die Übergabe eines (vorzeichenbehafteten) Zeichens an "isdigit" ein undefiniertes Verhalten (und Sie brauchen eine '#include '). – melpomene

+0

Ok, ich würde es durch 'isdigit' ersetzen. Aber das gibt mir auch nur die erste Ziffer der Nummer. Gibt es eine Möglichkeit, die ganze Nummer zu bekommen? – Gyanshu

Antwort

0

Fertig! Credit: @ AlgirdasPreidžius

#include <iostream> 
    using namespace std; 

    int fun() { 
     string c; 
     while(cin>>c) { 
      if(isdigit(c[0])) 
       return stoi(c); 
     } 
    } 

    int main() { 
     int a = fun(); 
     cout<<a<<" "; 
     return 0; 
    } 
+0

Nicht zur Arbeit gehen. Fehler bei Eingabe wie "acbd1234" – user4581301

+0

Meine Eingaben enthalten keine Zeichenfolgen wie diese. – Gyanshu

+0

Es enthält nur Ziffern oder Strings – Gyanshu

Verwandte Themen