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:
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!