首頁  >  文章  >  後端開發  >  如何清除和重複使用 ostringstream?

如何清除和重複使用 ostringstream?

Susan Sarandon
Susan Sarandon原創
2024-10-24 01:53:29436瀏覽

How to Clear and Reuse an ostringstream?

重複使用 ostringstream

在最佳化資源分配時,可能需要將 ostringstream 重設為其初始狀態以避免過度使用分配。本文透過探索清除和重複使用 ostringstream 的各種方法來解決此問題。

重置物件

要將ostringstream 恢復到原始狀態,需要執行一系列清除操作可以使用str :

<code class="cpp">// Clear any flags (e.g., eof)
s.clear();

// Empty the buffer
s.str("");</code>

這種方法有效清除緩衝區並重置流指標。或者,可以執行手動清除,然後查找開頭:

<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>

此方法透過覆寫現有緩衝區內容來防止不必要的重新分配。例如:

<code class="cpp">std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b";
assert(s.str() == "bello");</code>

要將字串用於C 樣式函數,可以使用std::ends 附加終止空字元:

<code class="cpp">// Append a terminating null
s << std::ends;
assert(s.str().size() == 5 && std::strlen(s.str().data()) == 1);</code>

儘管std::ends是已棄用的std::strstream 的殘餘,它在需要使用C 風格字元陣列而無需顯式null 終止的情況下仍然有用。

以上是如何清除和重複使用 ostringstream?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn