string überprüfen ob es nur Zahlen enthält !!!



  • Guten Tag, ich bin ein Anfänger in c++. ich habe schon selbe nach mögliche Lösungen in i-net sowie diverse Foren geschucht, aber da meine Wissen momentan ziemlich beschränkt ist, bräuchte ich eure Hilfe.

    int x; 
    cout <<"Bitte eine Zahl eingeben"; 
    scanf ("%i", &x);
    cout <<"Ihr Zahl ist: " <<x;
    

    Nun möchte ich aber einen check durchführen ob die eingegebene String nur Zahlen sind und bei "23n4" oder "nndsdsd" eine Fehler ausgibt.


  • Mod

    Du möchtest also wissen, ob der User auch eine Zahl eingegeben hat und ob die Einlese-Operation erfolgreich war.

    Das geht so:

    int x;
    cout << "Bitte eine Zahl eingeben: ";
    
    if( std::cin >> x ) // C++-I/O mit cin und cout statt scanf und printf
        std::cout << "Die Zahl war " << x;
    


  • Oh danke, hab das wohl verwechselt mit C 🙂
    Ich lerne grad momentan C++ mit der Uni-skripts und sie ist sowohl auch für C und C++. Was ich eigentlich wissen wollte ist, was passwiert wenn der User anstatt 1234 Buchstabe eingibt, dann sollte mein Programm irgendwie die eingegebene Daten überprüfen und sagen z.B: "Die eingegebene zahl ist nicht gültig, bitte geben Sie es erneut ein !".



  • nehemit schrieb:

    Was ich eigentlich wissen wollte ist, was passwiert wenn der User anstatt 1234 Buchstabe eingibt, dann sollte mein Programm irgendwie die eingegebene Daten überprüfen und sagen z.B: "Die eingegebene zahl ist nicht gültig, bitte geben Sie es erneut ein !".

    Also eine Schleife mit Body "Gib eine Zahl ein!" und Abbruchbedingung "Zahl eingegeben"?

    Klingt fast so, als ließe sich das mit dem Codeschnipsel da oben und einem while oder do while recht einfach basteln. 😉



  • [/quote]Klingt fast so, als ließe sich das mit dem Codeschnipsel da oben und einem while oder do while recht einfach basteln. ;)[/quote]

    Wie gesagt ich bin noch ein ziemlicher Anfänger. Seit einige Tage habe ich gelernt Daten zu deklarieren und wie man Schleife benutzt. Deswegen find ich es ziemlich schwierig wenn man mir Code schreibt mit völlig neue operatoren und Funktionen. Ich finde programmieren sehr interessant aber der Einstieg ist halt immens schwierig. Ich bitte um verständlich wenn ich unwissend irgendwas falsch schreibe



  • c++=cout+classes schrieb:

    Arcoth schrieb:

    Das geht so:

    int x;
    cout << "Bitte eine Zahl eingeben: ";
    
    if( std::cin >> x ) // C++-I/O mit cin und cout statt scanf und printf
        std::cout << "Die Zahl war " << x;
    

    Nö, so gehts nicht.

    string s;
    getline(std::cin, s);
    char *end;
    long value = strtol(s.c_str(), &end, 10);
    if (end == number || *end != '\0' || errno == ERANGE)
      // keine Zahl
    
    // war Zahl
    
    string s;
    getline(std::cin, s); //ich kann nur bis hierher folgen, alles danach verstehe ich nur Bahnhof :(
    


  • Du kannst einfach eine while-Schleife schreiben, die abbricht wenn eine Bedingung erfüllt ist.

    Und den Code kannst du dann so umbasteln:

    bool zahl_eingelesen = false
    
    // [...]
    
    if (std::cin >> x) {
        std::cout << "Die Zahl war " << x;
        zahl_eingelesen = true;
    }
    

    Nur wie du Schleifen schreibst, musst du dir im Buch/Tutorial deiner Wahl ansehen.


Anmelden zum Antworten