Menetapkan Semula Stringstream Dengan Berkesan
Dalam C , rentetan ialah alat yang berharga untuk memanipulasi dan menghuraikan rentetan. Untuk menetapkan semula aliran rentetan, pembangun menggunakan kaedah str() untuk mengosongkan rentetan asas. Walau bagaimanapun, pendekatan ini mungkin tidak menetapkan semula strim sepenuhnya.
Kajian Kes
Pertimbangkan coretan kod berikut:
<code class="cpp">stringstream parser; parser << 5; short top = 0; parser >> top; parser.str(""); // Attempting to reset parser parser << 6; // Fails to insert 6 into parser short bottom = 0; parser >> bottom;</code>
Niatnya ialah untuk menetapkan semula aliran penghurai dan menetapkan nilai baharu kepadanya. Walau bagaimanapun, kod secara tidak dijangka gagal memasukkan 6 ke dalam penghurai.
Memahami Ralat
Punca masalah terletak pada tetapan semula yang tidak lengkap. Kaedah str() hanya mengosongkan rentetan asas, manakala bendera ralat (seperti eof dan fail) kekal ditetapkan. Operasi seterusnya, seperti membaca daripada strim, akan gagal disebabkan oleh bendera ini.
Teknik Tetapan Semula yang Betul
Untuk menetapkan semula aliran rentetan dengan berkesan, adalah penting untuk bukan sahaja mengosongkan rentetan tetapi juga menetapkan semula bendera ralat. Ini boleh dicapai menggunakan kaedah clear():
<code class="cpp">parser.str( std::string() ); parser.clear();</code>
Dengan memanggil kedua-dua str() dan clear(), rentetan itu ditetapkan semula kepada rentetan kosong dan sebarang bendera ralat dikosongkan, memastikan yang berikutnya operasi akan berjaya.
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Semula Stringstream dengan Berkesan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!