Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk menetapkan semula aliran rentetan dengan betul untuk menghurai?

Bagaimana untuk menetapkan semula aliran rentetan dengan betul untuk menghurai?

Linda Hamilton
Lepaskan: 2024-11-03 22:57:03
asal
725 orang telah melayarinya

How to Properly Reset a Stringstream for Parsing?

Mengosongkan Stringstream: Menyelesaikan Isu Penghuraian

Kod anda bertujuan untuk menetapkan semula aliran rentetan bernama "parser" dengan menetapkan rentetannya kepada kosong rentetan. Walau bagaimanapun, pendekatan ini gagal menetapkan semula dengan berkesan, mengakibatkan masalah penghuraian.

Memahami Isu:

Masalahnya berpunca daripada fakta bahawa aliran rentetan mengekalkan bendera dalaman untuk menjejaki keadaannya. Walaupun anda mengosongkan penimbal rentetan dengan parser.str(""), bendera yang menunjukkan akhir fail (EOF) dan ralat (gagal) kekal ditetapkan. Akibatnya, operasi seterusnya pada strim, seperti membaca daripadanya dengan >>, gagal disebabkan oleh bendera aktif.

Kaedah Tetapan Semula yang Betul:

Kepada menetapkan semula aliran rentetan dengan betul, anda perlu melakukan dua langkah:

  1. Kosongkan penimbal rentetan menggunakan parser.str(std::string()): Ini menetapkan rentetan asas kepada rentetan kosong.
  2. Kosongkan bendera menggunakan parser.clear(): Ini menetapkan semula EOF dan bendera gagal, membenarkan operasi baharu pada strim.

Contoh Penggunaan:

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

Ini memastikan aliran rentetan ditetapkan semula sepenuhnya dan anda boleh terus menghuraikan daripadanya seperti yang dijangkakan.

Atas ialah kandungan terperinci Bagaimana untuk menetapkan semula aliran rentetan dengan betul untuk menghurai?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan