Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Anda Mengosongkan dan Menetapkan Semula StringStream dalam C dengan betul?

Bagaimanakah Anda Mengosongkan dan Menetapkan Semula StringStream dalam C dengan betul?

Patricia Arquette
Patricia Arquetteasal
2024-11-04 09:17:02312semak imbas

How Do You Properly Clear and Reset a StringStream in C  ?

Mengosongkan dan Menetapkan Semula StringStream

Dalam C , aliran rentetan ialah penimbal input/output yang dikaitkan dengan objek rentetan. Ia membenarkan manipulasi rentetan menggunakan operasi strim.

Pernyataan Masalah:

Pertimbangkan kod berikut:

<code class="cpp">stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); // Attempt to reset parser

parser << 6; // Doesn't put 6 into parser
short bottom = 0;
parser >> bottom;</code>

Isu timbul apabila mencuba untuk menggunakan semula aliran rentetan selepas mengosongkan kandungannya menggunakan parser.str("").

Penyelesaian:

Untuk mengosongkan aliran rentetan dengan betul, anda perlu melakukan dua langkah:

  1. Tetapkan semula rentetan asas kepada rentetan kosong menggunakan parser.str(std::string()).
  2. Kosongkan sebarang bendera gagal dan eof menggunakan parser.clear().
<code class="cpp">parser.str( std::string() );
parser.clear();</code>

Penjelasan:

Yang pertama >> operasi membaca integer 5 daripada aliran rentetan dan menetapkan bit eof kerana penghujung rentetan telah dicapai. Percubaan seterusnya untuk membaca 6 gagal kerana bit eof masih ditetapkan. Dengan menetapkan semula rentetan asas dan mengosongkan bendera, anda memulihkan strim kepada konfigurasi awalnya dan membenarkan operasi seterusnya berjaya.

Atas ialah kandungan terperinci Bagaimanakah Anda Mengosongkan dan Menetapkan Semula StringStream dalam C dengan betul?. 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