Fehlerhafte Eingaben in float oder double Variablen?
-
Hallo Leute!
Wenn ich in einem Konsolenprogramm eine Variable x vom Typ float oder double
anlege und diese mit cin >> x; bestücken lasse gibt es ja auch die
Möglichkeit, daß jemand eine ganz andere Zeichenkette einhämmert.Fängt diese Zeichenkette nicht mit einer numerischen Ziffer an, so kann ich
diesen Fehler über eine Abfrage von cin.fail(); abfangen. Ansonsten würde die Schleife durchlaufen und sämtliche folgenden cin übersprungen werden.Fängt diese Zeichenkette allerdings mit einer numerischen Ziffer an (z. B. 34534werfs) kann ich es nicht abfangen und das oben erwähnte passiert.
Kann mir jemand helfen?
Gruß Thorsten!!!
-
Du könntest mit
string temp; getline(temp,cin);
temp parsen und schauen was in der Eingabezeile alles steht.
-
In Forsetzung zu Knuddlbaer, durch das Parsen bleibt nur der eingabeTeil übrig den du zu einer Zahl mach möchtest.
Bei dir sieht das so aus, das du die gesamte Eingabe als Zahl interpretieren möchtest.Zur Konvertierung des Strings temp bieten sich die Funktionen
strtod Convert strings to a double-precision value. strtol Convert strings to a long-integer value. strtoul Convert strings to an unsigned long-integer value. char* err; long zahl = strtol( temp, &err, 10 ); /* 10 ist die basis des zahlensystems */ if ( *err == '\0' ) /* zahl */ else /* keine zahl */
-
Oh mann, logisch! Danke!!!
Werde ich versuchen.
Auf die Idee bin ich erst gar nicht gekommen.