Wiederverwendung eines Ostringstreams
Beim Bemühen, die Ressourcenzuteilung zu optimieren, kann es erforderlich sein, einen Ostringstream auf seinen ursprünglichen Zustand zurückzusetzen, um eine Überlastung zu vermeiden Zuteilungen. In diesem Artikel wird dieses Problem behandelt, indem verschiedene Methoden zum Löschen und Wiederverwenden eines Ostringstreams untersucht werden.
Zurücksetzen des Objekts
Um den Ostringstream in seinen ursprünglichen Zustand zurückzusetzen, ist eine Löschsequenz erforderlich und str können verwendet werden:
<code class="cpp">// Clear any flags (e.g., eof) s.clear(); // Empty the buffer s.str("");</code>
Dieser Ansatz löscht effektiv den Puffer und setzt die Stream-Zeiger zurück. Alternativ kann ein manuelles Löschen durchgeführt und anschließend zum Anfang gesucht werden:
<code class="cpp">// Clear any flags s.clear(); // Reset put pointer (for output streams) s.seekp(0); // Reset get pointer (for input streams) s.seekg(0);</code>
Diese Methode verhindert unnötige Neuzuweisungen, indem der vorhandene Pufferinhalt überschrieben wird. Zum Beispiel:
<code class="cpp">std::ostringstream s; s << "hello"; s.seekp(0); s << "b"; assert(s.str() == "bello");</code>
Um die Zeichenfolge für Funktionen im C-Stil zu verwenden, kann std::ends verwendet werden, um ein abschließendes Nullzeichen anzuhängen:
<code class="cpp">// Append a terminating null s << std::ends; assert(s.str().size() == 5 && std::strlen(s.str().data()) == 1);</code>
Obwohl std::ends ist ein Überbleibsel des veralteten std::strstream und bleibt in Situationen nützlich, in denen es notwendig ist, mit Zeichenarrays im C-Stil ohne explizite Nullterminierung zu arbeiten.
Das obige ist der detaillierte Inhalt vonWie lösche ich einen Ostringstream und verwende ihn wieder?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!