std :: get_time - So prüfen Sie den Analysefehler

8

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)

    
Yan4321 17.05.2015, 04:31
quelle

2 Antworten

6

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.

%Vor%     
cpplearner 17.05.2015, 07:28
quelle
4

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

verwenden %Vor%     
Dietmar Kühl 17.05.2015 05:05
quelle

Tags und Links