ostringstream の再利用
リソース割り当てを最適化する取り組みでは、過剰な割り当てを避けるために ostringstream を初期状態にリセットする必要が生じる場合があります。割り当て。この記事では、ostringstream をクリアして再利用するさまざまな方法を検討することで、この問題に対処します。
オブジェクトのリセット
ostringstream を元の状態に戻すには、一連のクリア
<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 を使用して終端の null 文字を追加できます。
<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 の残存物ですが、明示的な null 終端を使用せずに C スタイルの文字配列を操作する必要がある状況では引き続き役立ちます。
以上がostringstream をクリアして再利用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。