重複使用 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中文網其他相關文章!