Rumah > pembangunan bahagian belakang > C++ > Mengapakah `getline()` dalam C Kadangkala Melangkau Input Pengguna, dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah `getline()` dalam C Kadangkala Melangkau Input Pengguna, dan Bagaimana Saya Boleh Membetulkannya?

Mary-Kate Olsen
Lepaskan: 2024-12-09 07:42:08
asal
472 orang telah melayarinya

Why Does `getline()` in C   Sometimes Skip User Input, and How Can I Fix It?

getline() dalam C : Mengendalikan Penimbalan Talian

Dalam C , getline() digunakan untuk membaca input daripada aliran input standard cin sehingga watak baris baharu ditemui. Walau bagaimanapun, apabila digunakan dalam atur cara di mana input pengguna diminta, ia boleh membawa kepada gelagat yang tidak dijangka.

Pertimbangkan coretan kod berikut:

int number;
string str;
int accountNumber;

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
getline(cin, str);
cout << "Enter account number:";
cin >> accountNumber;
Salin selepas log masuk

Apabila program ini dilaksanakan, anda mungkin perasan bahawa selepas memasukkan nombor pertama, program segera meminta anda untuk nombor akaun tanpa menunggu anda memasukkan nama anda. Ini kerana getline() membaca aksara baris baharu yang tinggal daripada penimbal input.

Untuk mengelakkan isu ini, anda boleh menggunakan std::ws (ruang putih) sebelum getline() untuk melangkau semua ruang putih dan aksara baris baharu daripada aliran input. Ini memastikan getline() membaca input daripada aksara bukan ruang putih seterusnya:

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin >> ws;
getline(cin, str);
...
Salin selepas log masuk

Dengan memasukkan langkah ini, atur cara akan menggesa nama anda dengan betul sebelum beralih ke input seterusnya.

Atas ialah kandungan terperinci Mengapakah `getline()` dalam C Kadangkala Melangkau Input Pengguna, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan