ostringstream を再利用するにはどうすればよいですか?
アプリケーションがメモリを頻繁に割り当てることを避けるために、ostringstream (およびその基礎となるバッファ) をクリアして再利用することをお勧めします。オブジェクトを初期状態にリセットするには、次の手順に従います。
clear と str の使用
これまでは、clear と str のシーケンスを使用してこれを実現していました。
<code class="cpp">// 清除,因为 eof 或其他位可能仍然设置。 s.clear(); s.str("");</code>
これは、入力文字列ストリームと出力文字列ストリームの両方で機能します。
手動でクリアして検索
あるいは、手動でクリアしてから適切なシーケンス検索を開始することもできます:
<code class="cpp">s.clear(); s.seekp(0); // 对于输出:将放置指针指向开头 s.seekg(0); // 对于输入:将获取指针指向开头</code>
これにより、str が回避されます。再割り当てを実行し、代わりに現在出力バッファにあるものを上書きします。結果は次のようになります:
<code class="cpp">std::ostringstream s; s << "hello"; s.seekp(0); s << "b"; assert(s.str() == "bello");</code>
C-Functions では std::ends を使用します
C-Function でその文字列を使用したい場合は、std を使用できます。 :: ends は、次のように終端 null を入れます:
<code class="cpp">std::ostringstream s; s << "hello"; s.seekp(0); s << "b" << std::ends; assert(s.str().size() == 5 && std::strlen(s.str().data()) == 1);</code>
std::ends は、非推奨の std::strstream の残存であり、スタック char に割り当てたものに直接書き込むことができます。配列。終端 null を手動で挿入する必要があります。ただし、 std::ends は非推奨ではなく、上記の状況ではまだ役立つためだと思います。
以上がostringstream を再利用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。