ostringstream をクリアして再利用するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-24 01:53:29
オリジナル
435 人が閲覧しました

How to Clear and Reuse an ostringstream?

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!