Wie stringstream zu löschen?

stringstream parser; parser <> top; parser.str(""); //HERE I'M RESETTING parser parser <> bottom; 

Warum funktioniert es nicht?

Um einen Stringstream “zurücksetzen” zu können, müssen Sie die zugrunde liegende Sequenz in der Regel mit str auf eine leere Zeichenfolge zurücksetzen und alle Fehler und eof-Flags mit clear .

 parser.str( std::string() ); parser.clear(); 

In der Regel passiert, dass das erste >> das Ende der Zeichenfolge erreicht und das eof-Bit setzt, obwohl es den ersten Kurzschluss erfolgreich parst. Vorgänge im Stream nach diesem Vorgang schlagen sofort fehl, da das eof-Bit des Streams immer noch gesetzt ist.