Rumah > Artikel > pembangunan bahagian belakang > Mengapakah `getline` tidak menggesa input selepas menggunakan `>>`, dan bagaimana saya boleh membetulkannya?
>`, dan bagaimana saya boleh membetulkannya? " />
Mengatasi Isu Input dengan getline
Kod ini menggunakan fungsi getline untuk membaca input selepas menggunakan operator>> untuk input lain. Walau bagaimanapun, getline tidak menggesa pengguna untuk input dan sebaliknya menggunakan nilai awal 0 untuk pembolehubah harga.
Sebab bagi kelakuan ini ialah berkaitan dengan operator>> dan getline>> dibataskan ruang putih, bermakna ia berhenti membaca input apabila ia menemui aksara ruang putih (seperti ruang atau baris baharu untuk membaca integer). boleh menekan kekunci enter untuk menyerahkan input mereka, meninggalkan aksara baris baharu dalam penimbal input.
Seterusnya, apabila getline dipanggil, ia segera mencari aksara baris baharu dalam penimbal dan menggunakannya untuk menamatkan input, walaupun sebelum memberi pengguna peluang untuk memasukkan harga sebenar Untuk menyelesaikan isu ini, terdapat dua pendekatan:
1. Gunakan ignore() atau Dummy getline Call
Sebelum memanggil getline, gunakan fungsi ignore() untuk mengosongkan aksara baris baharu daripada input penampan. Sebagai alternatif, anda boleh membuat panggilan palsu ke getline() untuk mengalih keluar baris baharu.
2. Gunakan getline Secara Eksklusif
Daripada menggunakan operator>>, gunakan getline untuk semua input dan tukar rentetan yang diperoleh kepada jenis data yang dikehendaki menggunakan fungsi seperti stoi() untuk integer dan stod() untuk float . Pendekatan ini memastikan keselamatan dan keteguhan data.
Atas ialah kandungan terperinci Mengapakah `getline` tidak menggesa input selepas menggunakan `>>`, dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!