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

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

DDD
Lepaskan: 2024-12-22 22:28:13
asal
301 orang telah melayarinya

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

Isu Input dengan getline()

Dalam atur cara C, anda mungkin menghadapi gelagat yang pelik apabila menggunakan getline() untuk membaca input pengguna . Khususnya, jika anda meminta integer, ikuti dengan getline(cin, str), dan kemudian integer lain, anda akan perasan bahawa "Masukkan Nombor Akaun" muncul sebelum anda dapat memasukkan "str."

Ini berlaku kerana getline() juga menangkap aksara baris baharu yang dimasukkan selepas integer pertama. Untuk mengelakkan ini, anda boleh mengarahkan cin untuk melangkau ruang kosong sebelum membaca "str." Begini caranya:

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
getline(cin, str);
Salin selepas log masuk

Di sini, cin.ignore() melangkau sebarang ruang putih, termasuk baris baharu, sebelum getline() membaca input pengguna.

Sebagai alternatif, anda boleh menggunakan cin.get () untuk membaca dan membuang aksara baris baharu secara eksplisit:

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

Pendekatan ini memastikan bahawa newline digunakan dan getline() tidak cuba membacanya.

Atas ialah kandungan terperinci Mengapakah `getline()` Melangkau Input Selepas Membaca Integer dalam C ?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan