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;
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); ...
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!