Rumah >pembangunan bahagian belakang >C++ >Mengapakah `getline()` Melangkau Input Selepas Membaca Integer dalam 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);
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);
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!