Ergebnis 1 bis 10 von 28

Baum-Darstellung

  1. #8
    Trojaner Avatar von s3rb31
    Registriert seit
    21.01.2010
    Beiträge
    75

    Standard AW: Anfänger Fragen - c++

    Also ich versuche mal hier ein wenig Licht ins Dunkle zu bringen.

    Zitat Zitat von wacked Beitrag anzeigen
    Ich geb Text ein und das wird "akzeptiert". std::cin will in eine Zahl schreiben -- wenn halt was anderes kommt haste Pech gehabt.
    Also das es akzeptiert stimmt nicht ganz. Die Daten liegen auch noch auf dem Stream, wenn nicht akzeptiert wurde!

    Zitat Zitat von wacked Beitrag anzeigen
    Mir fällt gerade kein Weg (mit std::iostream) zu erkennen ob das was eingegeben wurde auch das richtige Format hatte.
    Dafür gibt es ja die Dokumentation

    Also es gibt drei Statusflags in der std::ios. Grob kann man das so beschreiben:

    - das Badbit wird nur bei ernsthaften IO Fehlern gesetzt
    - das Failbit für Operationen die einen Fehler erzeugen dürfen
    - das Eofbit um zu signalisieren dass das Ende des Streams erreicht wurde

    Für unseren Fall ist das Failbit interessant. Ich habe mal ein wenig Beispielcode vorbereitet:


    Zu dem Beispiel von wacked:

    Sonst würde ich es halt so machen:
    Code:
    #include <iostream>
    #include <cstdio>
    #include <errno.h>
    
    int main() {
            int a;
    
            while(1) 
            {
                    int ret = scanf("%d", &a);
                    // could an int be read?
                    if (ret == 1) {
                            break;
                    }
                    // is the stream fucked or has it ended?
                    else if (ferror(stdin) || feof(stdin)) {
                            return 0;
                    }
                    else {
                             // remove the unparsed data from stdin,
                             // so the next call to scanf doesn't 
                             // read the same data again
                             // todo: find out why fflush(stdin) 
                             // doesn't work 
    
                            getchar();
                    }
            }
    
            std::cout << a << '\n';
    }
    Bitte nicht! Hier wird C mit C++ vermischt was in den seltensten Fällen zu empfehlen ist, und m. M. n. auch kein guter Style ist! Eine schöne Erklärung warum man das nicht will gibt es hier.

    Abschließend bleibt noch zu sagen dass Reguläre Ausdrücke für das validieren von Zahlen, wortwörtlich, mit Kanonen auf Spatzen schießen ist! Mit welchen anderen Problemen man dann zu Kämpfen hat zeigt die Exception weiter oben ganz gut finde ich!
    Geändert von s3rb31 (29.04.2017 um 02:32 Uhr)

  2. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    wacked (29.04.2017)

Ähnliche Themen

  1. anfänger tut
    Von KifKif im Forum Trashbox
    Antworten: 5
    Letzter Beitrag: 28.02.2010, 15:34
  2. Für PHP-Anfänger
    Von Floo im Forum PHP
    Antworten: 0
    Letzter Beitrag: 29.09.2007, 13:53
  3. bin ein anfänger
    Von baldessarini im Forum Wireless-Lan
    Antworten: 6
    Letzter Beitrag: 23.09.2007, 23:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •