重用 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中文网其他相关文章!