Isu getline(): Melangkau Baris Baharu
Apabila menggunakan getline(cin, str) untuk mendapatkan input pengguna selepas membaca integer menggunakan cin >> nombor, anda mungkin menghadapi tingkah laku yang tidak dijangka di mana gesaan untuk nama melangkau input untuk str. Ini berlaku kerana getline(cin, str) membaca dan membuang aksara baris baharu yang ditinggalkan oleh input integer sebelumnya.
Untuk menangani isu ini, anda boleh menggunakan std::ws sebelum getline(cin, str) untuk melangkau ruang putih , termasuk baris baharu, sebelum membaca rentetan. Ini memastikan getline(cin, str) membaca input pengguna dengan betul tanpa melangkau gesaan nama:
int number; string str; int accountNumber; cout << "Enter number:"; cin >> number; cout << "Enter name:"; cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); getline(cin, str); cout << "Enter account number:"; cin >> accountNumber;
Dengan menggunakan cin.ignore, anda dengan cekap memintas sebarang ruang kosong atau baris baharu yang tinggal, membenarkan getline(cin, str ) untuk menangkap input nama pengguna seperti yang dimaksudkan.
Atas ialah kandungan terperinci Mengapakah `getline()` Melangkau Input Selepas Membaca Integer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!