Rumah >pembangunan bahagian belakang >C++ >Mengapakah `getline()` Melangkau Input Selepas Membaca Integer?

Mengapakah `getline()` Melangkau Input Selepas Membaca Integer?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-16 21:06:11226semak imbas

Why Does `getline()` Skip Input After Reading an Integer?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn