Rumah > Artikel > pembangunan bahagian belakang > Mengapa Fungsi `getline()` Saya Tidak Menerima Input Pengguna dalam C ?
Apabila cuba menggunakan kaedah getline() untuk menangkap input pengguna, anda mungkin menghadapi tingkah laku yang tidak dijangka apabila program berhenti tanpa menerima input .
Pertimbangkan contoh berikut:
string messageVar; cout << "Type your message: "; getline(cin, messageVar);
Walaupun terdapat pernyataan cout yang menggesa pengguna, atur cara akan ditamatkan lebih awal tanpa mengumpul input.
Isu itu timbul kerana sifat >> operator, yang meninggalkan aksara baris baharu dalam penimbal input. Watak ini bercanggah dengan getline(), yang menjangkakan input ditamatkan pada baris baharu.
Untuk mengurangkan masalah ini, adalah penting untuk membuang aksara baris baharu daripada penimbal. Ini boleh dicapai menggunakan kaedah cin.ignore().
Kod yang diperbetulkan sepatutnya kelihatan seperti ini:
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
Pernyataan cin.ignore() mengosongkan aksara baris baharu daripada penimbal , membenarkan getline() berfungsi dengan betul.
Atas ialah kandungan terperinci Mengapa Fungsi `getline()` Saya Tidak Menerima Input Pengguna dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!