Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menggunakan Semula ostringstreams?

Bagaimana untuk Menggunakan Semula ostringstreams?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 04:34:02891semak imbas

How to Reuse ostringstreams?

Bagaimana untuk menggunakan semula aliran ostring?

Untuk mengelakkan aplikasi memperuntukkan memori dengan kerap, anda mungkin mahu mengosongkan dan menggunakan semula aliran ostring (dan penimbal asasnya). Untuk menetapkan semula objek kepada keadaan asalnya, ikuti langkah berikut:

Menggunakan clear dan str

Pada masa lalu, jujukan clear dan str digunakan untuk mencapai ini :

<code class="cpp">// 清除,因为 eof 或其他位可能仍然设置。
s.clear();
s.str("");</code>

Ini berfungsi untuk kedua-dua aliran rentetan input dan output.

Kosongkan dan cari secara manual

Sebagai alternatif, anda boleh mengosongkan secara manual dan kemudian mulakan dengan carian urutan yang sesuai:

<code class="cpp">s.clear();
s.seekp(0); // 对于输出:将放置指针指向开头
s.seekg(0); // 对于输入:将获取指针指向开头</code>

Ini akan menghalang str Lakukan beberapa pengagihan semula, sebaliknya tulis ganti apa sahaja yang ada dalam penimbal keluaran pada masa ini. Hasilnya adalah seperti berikut:

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

Untuk c-functions gunakan std::ends

Jika anda ingin menggunakan rentetan itu untuk c-functions, anda boleh gunakan std::ends ends, meletakkan nol penamatan, seperti ini:

<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 ialah baki std::strstream yang ditamatkan, yang boleh menulis terus kepada perkara yang anda peruntukkan pada susunan char tindanan. Anda mesti memasukkan nol penamat secara manual. Walau bagaimanapun, std::ends tidak ditamatkan, saya fikir kerana ia masih berguna dalam situasi di atas.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Semula ostringstreams?. 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