Mengapa `getline()` Tidak Berfungsi Selepas Menggunakan Operator Pengekstrakan `cin`?

DDD
Lepaskan: 2024-11-11 15:51:02
asal
149 orang telah melayarinya

Why Doesn't `getline()` Work After Using `cin`'s Extraction Operator?

Memahami Gelagat getline()

Fungsi getline() dalam C digunakan untuk membaca aksara daripada input standard sehingga aksara baris baharu dihadapi. Walau bagaimanapun, pembangun mungkin menghadapi isu yang tidak dijangka apabila menggunakan getline() selepas operator pengekstrakan cin (>>).

Penerangan Masalah

Pengguna mungkin mendapati bahawa kod mereka adalah tidak berhenti seketika untuk menerima input pengguna apabila cuba menangkap mesej yang disediakan pengguna menggunakan getline(). Punca asas berkaitan dengan kelakuan pengendali pengekstrakan cin.

Penyelesaian: Membilas Aksara Baris Baharu

Selepas menggunakan operator pengekstrakan cin untuk membaca data, ia meninggalkan baris baharu aksara (n) dalam penimbal input. Apabila getline() dipanggil serta-merta selepas itu, ia terjumpa aksara baris baharu ini dan berhenti membaca serta-merta.

Untuk menyelesaikan isu ini, seseorang mesti membuang aksara baris baharu daripada penimbal sebelum menggunakan getline(). Ini boleh dicapai dengan menggunakan cin.ignore() seperti berikut:

string messageVar;
cout << "Type your message: ";
cin.ignore();
getline(cin, messageVar);
Salin selepas log masuk

Dengan memasukkan cin.ignore(), aksara baris baharu dibuang, membenarkan getline() membaca input pengguna seperti yang dimaksudkan. Teknik ini memastikan kedua-dua operator cin dan getline() berfungsi dengan lancar berturut-turut.

Atas ialah kandungan terperinci Mengapa `getline()` Tidak Berfungsi Selepas Menggunakan Operator Pengekstrakan `cin`?. 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