Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menetapkan Semula Stringstream dengan Berkesan?

Bagaimana untuk Menetapkan Semula Stringstream dengan Berkesan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-04 05:52:01182semak imbas

How to Effectively Reset a Stringstream?

Menetapkan Semula Rentetan Dengan Berkesan

Apabila cuba mengosongkan aliran rentetan untuk menggunakannya semula untuk input dan pengekstrakan selanjutnya, adalah penting untuk menggunakan teknik yang sesuai untuk tetapkan semula strim sepenuhnya. Pertimbangkan contoh berikut:

stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); // Attempting to reset the parser

parser << 6; // Input value ignored
short bottom = 0;
parser >> bottom;

Dalam senario ini, percubaan untuk menetapkan semula aliran rentetan dengan memberikan rentetan kosong kepada ahli strnya tidak mengosongkan strim sepenuhnya. Akibatnya, nilai input seterusnya 6 diabaikan dan operasi pengekstrakan kedua gagal.

Untuk menetapkan semula aliran rentetan dengan berkesan, bukan sahaja perlu menetapkan rentetan kosong kepada str tetapi juga mengosongkan sebarang kegagalan yang masih ada dan bendera eof. Ini boleh dicapai menggunakan kaedah yang jelas:

parser.str(std::string());
parser.clear();

Dengan melaksanakan kedua-dua tindakan ini, aliran rentetan ditetapkan semula sepenuhnya dan sedia untuk digunakan semula, kerana urutan asas dikosongkan dan semua bendera dikosongkan. Gagal melaksanakan kedua-dua langkah boleh membawa kepada tingkah laku yang tidak dijangka, seperti strim kekal dalam keadaan "akhir fail", menyebabkan operasi seterusnya gagal.

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Semula Stringstream dengan Berkesan?. 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