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
Linda Hamiltonasal
2024-11-03 22:57:03820semak imbas

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>

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!

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