Rumah >pembangunan bahagian belakang >C++ >Mengapakah fungsi C `getline()` saya digantung selepas menggunakan `cin`?
Menggunakan getline() dalam C : Menyelesaikan Masalah Input Pengguna
Apabila menggunakan kaedah getline() untuk mendapatkan semula input pengguna, adalah penting untuk menjadi menyedari kemungkinan perangkap. Pertimbangkan kod berikut:
string messageVar; cout << "Type your message: "; getline(cin, messageVar);
Walaupun cuba mendapatkan input pengguna, kod ini digantung selama-lamanya, tidak pernah menangkap mesej yang diingini.
Punca Isu:
Isu ini berpunca daripada fakta bahawa cin >> operator meninggalkan aksara baris baru n dalam penimbal input. Ini menjadi masalah untuk getline(), yang membaca input sehingga menemui baris baharu. Akibatnya, getline() ditamatkan secara pramatang tanpa sebarang input diberikan.
Penyelesaian:
Untuk menyelesaikan masalah ini, anda mesti membuang aksara baris baharu daripada penimbal input sebelum memanggil getline(). Ini boleh dicapai menggunakan cin.ignore():
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
Dengan menambahkan cin.ignore(), aksara baris baharu yang ditinggalkan dalam penimbal akan dibuang, membenarkan getline() berfungsi seperti yang diharapkan. Ia akan menunggu input pengguna dan menangkap mesej yang dimasukkan apabila kekunci Enter ditekan.
Atas ialah kandungan terperinci Mengapakah fungsi C `getline()` saya digantung selepas menggunakan `cin`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!