Rumah > Artikel > pembangunan bahagian belakang > Mengapa `getline()` Tidak Berfungsi Selepas Menggunakan Operator Pengekstrakan `cin`?
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);
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!