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]


Anmelden zum Antworten