getline Tidak Mendorong Input: Kes Isu Penampan
Apabila menggunakan getline(cin, mystr) dalam C , anda mungkin menghadapi isu di mana ia tidak menggesa input pengguna dan sebaliknya memberikan nilai awal "0" kepada pembolehubah harga. Ini kerana getline membaca input sehingga ia menemui aksara baris baharu ('n'), dan mungkin terdapat aksara baris baharu yang berlarutan dalam penimbal input.
Masalah timbul apabila mencampurkan operator aliran input seperti >> dengan getline. Apabila anda menggunakan cin >> i untuk membaca integer, input pengguna diikuti oleh aksara baris baharu. Walau bagaimanapun, baris baharu ini kekal dalam penimbal input. Apabila anda kemudiannya memanggil getline, ia mentafsir aksara baris baharu sebagai input, tanpa menggesa pengguna.
Penyelesaian Kemungkinan:
cin.ignore(); getline(cin, mystr);
int getInt() { string input; getline(cin, input); return stoi(input); }
Amalan Disyorkan:
Adalah amalan terbaik untuk menggunakan getline untuk semua input, memastikan aksara baris baharu dikendalikan dengan betul dan input sentiasa digesa untuk. Elakkan mencampurkan >> dengan getline untuk mengelakkan isu penimbal ini.
Atas ialah kandungan terperinci Mengapakah `getline` tidak meminta Input dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!