Ich habe ein Problem mit einem Programm, an dem ich in C++ arbeite. Ich bitte den Benutzer, eine gültige Nummer einzugeben. Ich nehme es als eine Zeichenkette auf, weil die bestimmte Aufgabe, die ich mache, es auf lange Sicht einfacher macht. Für die grundlegende Fehlerprüfung möchte ich überprüfen, ob die eingegebene Nummer eine gültige Nummer ist. Beispiel:Wie kann ich überprüfen, ob eine als String gespeicherte Zahl (double type) eine gültige doppelte Zahl in C++ ist?
Enter number: 3.14
This would be valid
Enter number: 3.1456.365.12
This shouldn't be valid
Ja, es wird eine ‚bad_lexical_cast‘ Ausnahme auslösen, wenn es nicht erfolgreich umgesetzt werden kann. Also stell sicher, dass du es immer in einem try/catch anrufst. –
boost :: lexical_cast basiert auf std :: istringstream, so dass fehlerhafte Eingaben vom Typ "3.14.15" nicht erkannt werden. – Manuel
@Manuel: Eigentlich tut es das. Außerdem wird überprüft, ob die * gesamte * Zeichenfolge erfolgreich konvertiert wurde. (Ja, mit stringstream können Sie das auch überprüfen.) Nicht zu sicher, ob dieses Verhalten costumizable ist (man braucht diese Überprüfung nicht immer) ... – UncleBens