Fungsi Menyelesaikan masalah getline() dalam C
Semasa menggunakan kaedah getline() untuk mendapatkan semula mesej yang dimasukkan pengguna, sesetengah pembangun menghadapi masalah di mana kaedah ditamatkan sebelum waktunya input.
Isu: Program gagal menunggu input pengguna selepas menggesa dengan "Taip mesej anda: " menggunakan kod:
string messageVar; cout << "Type your message: "; getline(cin, messageVar);
Pendasar Masalah:
Bila cin >> digunakan sebelum getline(), aksara baris baharu ditinggalkan dalam penimbal input. Baris baharu ini kekal dalam penimbal apabila getline() cuba membaca input, mengakibatkan penamatan serta-merta.
Penyelesaian:
Untuk menangani masalah ini, adalah penting untuk mengalih keluar aksara baris baharu daripada penimbal input sebelum menggunakan getline(). Ini boleh dicapai menggunakan fungsi cin.ignore(). Kod yang diubah suai:
string messageVar; cout << "Type your message: "; cin.ignore(); // Flushes the newline character getline(cin, messageVar);
Dengan membuang aksara baris baharu, getline() boleh membaca input dengan betul sehingga pengguna memasuki baris baharu, membenarkan untuk mendapatkan semula mesej yang dimaksudkan.
Atas ialah kandungan terperinci Mengapakah getline() Menamatkan Input Secara Pramatang dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!