Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengosongkan dan menggunakan semula aliran ostring?

Bagaimana untuk mengosongkan dan menggunakan semula aliran ostring?

Susan Sarandon
Susan Sarandonasal
2024-10-24 01:53:29436semak imbas

How to Clear and Reuse an ostringstream?

Menggunakan semula aliran ostring

Dalam usaha mengoptimumkan peruntukan sumber, seseorang mungkin menghadapi keperluan untuk menetapkan semula aliran ostring kepada keadaan asalnya untuk mengelakkan berlebihan peruntukan. Artikel ini menangani isu ini dengan meneroka pelbagai kaedah untuk mengosongkan dan menggunakan semula aliran ostring.

Menetapkan Semula Objek

Untuk mengembalikan aliran ostring kepada keadaan asalnya, urutan jelas dan str boleh digunakan:

<code class="cpp">// Clear any flags (e.g., eof)
s.clear();

// Empty the buffer
s.str("");</code>

Pendekatan ini secara berkesan mengosongkan penimbal dan menetapkan semula penunjuk strim. Sebagai alternatif, pembersihan manual boleh dilakukan diikuti dengan mencari ke permulaan:

<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>

Kaedah ini menghalang pengagihan semula yang tidak perlu dengan menulis ganti kandungan penimbal sedia ada. Contohnya:

<code class="cpp">std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b";
assert(s.str() == "bello");</code>

Untuk menggunakan rentetan bagi fungsi gaya C, std::ends boleh digunakan untuk menambahkan aksara null penamat:

<code class="cpp">// Append a terminating null
s << std::ends;
assert(s.str().size() == 5 && std::strlen(s.str().data()) == 1);</code>

Walaupun std::ends ialah tinggalan daripada std::strstream yang telah ditamatkan, ia kekal berguna dalam situasi di mana ia perlu untuk bekerja dengan tatasusunan aksara gaya C tanpa penamatan nol yang jelas.

Atas ialah kandungan terperinci Bagaimana untuk mengosongkan dan menggunakan semula aliran ostring?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn