Rumah > pembangunan bahagian belakang > C++ > Mengapakah Menetapkan Semula Stringstream dengan `str(\'\')` Tidak Memadamkannya?

Mengapakah Menetapkan Semula Stringstream dengan `str(\'\')` Tidak Memadamkannya?

DDD
Lepaskan: 2024-11-04 03:04:30
asal
990 orang telah melayarinya

Why Doesn't Resetting a Stringstream with `str(

Mengosongkan Stringstream

Kod berikut cuba mengosongkan objek stringstream bernama parser:

<code class="cpp">stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); // HERE I'M RESETTING parser

parser << 6; // DOESN'T PUT 6 INTO parser
short bottom = 0;
parser >> bottom;</code>
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini tidak berfungsi seperti yang diharapkan. Mari jelaskan sebabnya.

Masalah:

Isunya terletak pada cara aliran rentetan mengendalikan bendera akhir fail (eof) dan gagal. Apabila pengekstrakan pertama (>> atas) mencapai penghujung rentetan, ia menetapkan bit eof. Operasi seterusnya pada strim gagal kerana bit eof kekal ditetapkan.

Penyelesaian:

Untuk mengosongkan aliran rentetan dengan betul, kedua-dua turutan asas dan bendera gagal dan eof mesti ditetapkan semula. Kod berikut melakukan ini:

<code class="cpp">parser.str(std::string());
parser.clear();</code>
Salin selepas log masuk

Kaedah str() menetapkan urutan asas kepada rentetan kosong, manakala kaedah clear() mengosongkan fail fail dan eof.

Dengan ini berubah, kod akan membaca nilai 6 dengan betul ke dalam strim penghurai dan menyimpannya dalam pembolehubah bawah.

Atas ialah kandungan terperinci Mengapakah Menetapkan Semula Stringstream dengan `str(\'\')` Tidak Memadamkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan