Bagaimana untuk Menetapkan Semula Stringstream dengan Berkesan dalam C?

DDD
Lepaskan: 2024-11-04 19:32:01
asal
345 orang telah melayarinya

How to Effectively Reset a Stringstream in C  ?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!