Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `getline` tidak menggesa input selepas menggunakan `>>`, dan bagaimana saya boleh membetulkannya?

Mengapakah `getline` tidak menggesa input selepas menggunakan `>>`, dan bagaimana saya boleh membetulkannya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-27 10:07:08894semak imbas

Why is `getline` not prompting for input after using `>>`, 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!

Kenyataan:
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