Einen Stringstream effektiv zurücksetzen
In C sind Stringstreams ein wertvolles Werkzeug zum Bearbeiten und Parsen von Strings. Um einen Stringstream zurückzusetzen, verwenden Entwickler die Methode str(), um den zugrunde liegenden String zu löschen. Dieser Ansatz setzt den Stream jedoch möglicherweise nicht vollständig zurück.
Die Fallstudie
Beachten Sie den folgenden Codeausschnitt:
<code class="cpp">stringstream parser; parser << 5; short top = 0; parser >> top; parser.str(""); // Attempting to reset parser parser << 6; // Fails to insert 6 into parser short bottom = 0; parser >> bottom;</code>
Die Absicht ist um den Parser-Stream zurückzusetzen und ihm einen neuen Wert zuzuweisen. Allerdings gelingt es dem Code unerwartet nicht, 6 in den Parser einzufügen.
Den Fehler verstehen
Die Ursache des Problems liegt im unvollständigen Zurücksetzen. Die Methode str() löscht nur die zugrunde liegende Zeichenfolge, während die Fehlerflags (z. B. eof und fail) gesetzt bleiben. Nachfolgende Vorgänge, wie das Lesen aus dem Stream, schlagen aufgrund dieser Flags fehl.
Richtige Rücksetztechnik
Um einen Stringstream effektiv zurückzusetzen, ist es wichtig, nicht nur zu löschen die Zeichenfolge, sondern setzt auch die Fehlerflags zurück. Dies kann mit der Methode „clear()“ erreicht werden:
<code class="cpp">parser.str( std::string() ); parser.clear();</code>
Durch den Aufruf von str() und clear() wird die Zeichenfolge auf eine leere Zeichenfolge zurückgesetzt und alle Fehlerflags werden gelöscht, um sicherzustellen, dass nachfolgende Operationen werden erfolgreich sein.
Das obige ist der detaillierte Inhalt vonWie kann man einen Stringstream in C effektiv zurücksetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!