StringStream löschen und zurücksetzen
In C ist ein Stringstream ein Eingabe-/Ausgabepuffer, der einem String-Objekt zugeordnet ist. Es ermöglicht die Manipulation von Zeichenfolgen mithilfe von Stream-Operationen.
Problemstellung:
Beachten Sie den folgenden Code:
<code class="cpp">stringstream parser; parser << 5; short top = 0; parser >> top; parser.str(""); // Attempt to reset parser parser << 6; // Doesn't put 6 into parser short bottom = 0; parser >> bottom;</code>
Das Problem tritt beim Versuch auf um den Stringstream wiederzuverwenden, nachdem sein Inhalt mit parser.str("") gelöscht wurde.
Lösung:
Um einen Stringstream ordnungsgemäß zu löschen, müssen Sie zwei Schritte ausführen:
<code class="cpp">parser.str( std::string() ); parser.clear();</code>
Erklärung:
Das erste >> Die Operation liest die Ganzzahl 5 aus dem Stringstream und setzt das EOF-Bit, da das Ende des Strings erreicht wurde. Der anschließende Versuch, 6 zu lesen, schlägt fehl, da das EOF-Bit noch gesetzt ist. Indem Sie die zugrunde liegende Zeichenfolge zurücksetzen und die Flags löschen, stellen Sie die ursprüngliche Konfiguration des Streams wieder her und ermöglichen den Erfolg nachfolgender Vorgänge.
Das obige ist der detaillierte Inhalt vonWie löscht und setzt man einen StringStream in C ordnungsgemäß zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!