Wie lösche ich Stringstream? [duplicate]

Lesezeit: 1 Minute

Wie losche ich Stringstream duplicate
Wir können nichts tun

stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); //HERE I'M RESETTING parser

parser << 6; //DOESN'T PUT 6 INTO parser
short bottom = 0;
parser >> bottom;

Warum funktioniert es nicht?

Wie losche ich Stringstream duplicate
CB Bailey

Um einen Stringstream zurückzusetzen, müssen Sie normalerweise die zugrunde liegende Sequenz mit auf einen leeren String zurücksetzen str und um alle Fail- und Eof-Flags mit zu löschen clear.

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

Typischerweise passiert das als erstes >> erreicht das Ende der Zeichenfolge und setzt das eof-Bit, obwohl es den ersten Kurzschluss erfolgreich analysiert. Operationen auf dem Stream danach schlagen sofort fehl, da das eof-Bit des Streams immer noch gesetzt ist.

  • Ich persönlich denke parser.str("") ist klarer, aber das ist Ansichtssache.

    – TED

    17. Mai 2010 um 10:14 Uhr

  • Es könnte sich lohnen, diese Antwort zu bearbeiten, um parser.clear() an erster Stelle zu setzen, da andere Methoden zum Hinzufügen von Inhalten zum Stream (z. B. parser << 5) nicht funktionieren, es sei denn, clear wird zuerst aufgerufen.

    – John Doucette

    20. Februar 2014 um 22:13 Uhr

  • @TED, ich denke, es ist auf diese Weise etwas effizienter, da Sie es vermeiden, den String-Konstruktor für a aufzurufen const char *

    – Moha das allmächtige Kamel

    7. September 2015 um 13:05 Uhr

  • @Mhd.Tahawi – Es gibt einige Fälle, insbesondere solche, die Dinge betreffen, die von Natur aus langsam sind, wie das Ändern der Größe / Zerstörung dynamisch zugewiesener Container, in denen es der Gipfel der Torheit wäre, das weniger Klare für eine theoretische Mikrooptimierung zu tun.

    – TED

    7. September 2015 um 16:47 Uhr


  • parser.str({});

    – v.oddou

    22. Mai 2019 um 5:40 Uhr

921910cookie-checkWie lösche ich Stringstream? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy