stringstream: überprüfen ob Operation erfolgreich
-
Hi,
mit einem std::stringstream lese ich string-Werte aus einer XML-Datei ein und wandle sie in verschiedene Datentypen um:
bool XMLFile::Bool() { bool ret; stringstream ss(stringstream::in || stringstream::out); ss << GetStringValue(); ss >> ret; return ret; }Wird von GetValue ein leerer String zurückgegeben, dann funktioniert die Umwandlung nicht und bool wird nichts zugewiesen. Das möchte ich feststellen, aber wie?
if(ss>>ret) funktioniert nicht, ebensowenig ss.fail().mfg. Tubos
mfg. Tubos
-
Du könntest 'ret' ja mit einem Defaultwert vorbesetzen, der bei einem Eingabefehler zurückgegeben werden soll. Ansonsten ist "ss.fail()" oder "!ss" der offizielle Weg festzustellen, ob die letzte Lese-Operation geklappt hat.
PS: Natürlich kannst du auch etwas weiter vorne ansetzen:
string data; if((data=GetStringValue())!="") { ss<<data; ss>>ret; } else { //Fehler }
-
Ansonsten ist "ss.fail()" oder "!ss" der offizielle Weg festzustellen, ob die letzte Lese-Operation geklappt hat.
Hmmm... vorhin hat das nicht funktioniert. Jetzt geht es plötzlich. Werd ich so machen.
Danke für die Hilfe!
[edit]Hier stand eine Frage, die hat sich aber erledigt.[/edit]