Ich verwende den folgenden Code, um einen stringstream in tm struct zu parsen:
%Vor%Ich möchte prüfen, ob ein Parsing-Fehler aufgetreten ist (ungültige Eingabe). Es scheint, dass diese Funktion keine Ausnahme auslöst. hat in der Dokumentation keine brauchbaren Informationen gefunden: Ссылка
Klingt wie die Überprüfung des "Goodbits" kann die Richtung sein, aber ich bin mir nicht sicher, wie es geht.
(Ich verwende den VS2013-Compiler)
Wie immer meldet std::istream
Fehler, indem einer seiner iostate
festgelegt wird. welches mit der Member-Funktion getestet werden kann fail()
, operator!
oder durch konvertiert das Stream-Objekt in bool
. Wenn Sie das Stream-Objekt so konfigurieren möchten, dass es bei Auftreten eines Fehlers eine Ausnahme auslöst, können Sie % co_de aufrufen % .
Hier ist ein kleines Beispiel, das die Memberfunktion exceptions()
verwendet, um zu überprüfen, ob ein Fehler aufgetreten ist.
Wenn Sie std::get_time()
mit std::istream
verwenden, setzen Sie die Statusflags für den Fall, dass std::time_get<...>::get_time()
fehlschlägt. Das heißt, Sie würden einfach