Apabila bekerja dengan input pengguna, adalah penting untuk memastikan data yang dimasukkan sejajar dengan format yang diharapkan. Dalam kes di mana nilai integer diperlukan, anda mungkin menghadapi senario di mana pengguna secara tidak sengaja memasukkan aksara bukan berangka.
Artikel ini menyediakan penyelesaian untuk menangani isu ini dengan menyemak sama ada input daripada aliran input standard cin ialah integer atau tidak. Berikut ialah pecahan terperinci pelaksanaan:
int x; cin >> x; if (cin.fail()) { // Not an int. }
Fungsi cin.fail() menyemak keadaan aliran input. Jika operasi input tidak berjaya (contohnya, disebabkan oleh input yang tidak sah), fungsi mengembalikan benar dan menetapkan bendera failbit. Jika tidak, ia mengembalikan palsu.
Pendekatan ini membolehkan anda menentukan sama ada input ialah integer atau tidak. Jika tidak, anda boleh mengambil tindakan yang sewajarnya, seperti menggesa pengguna untuk memasukkan semula integer yang sah.
Untuk senario di mana aliran input mengandungi aksara bukan int diikuti oleh integer, anda boleh menggunakan gelung berikut :
int x; while (cin.fail()) { cin.clear(); cin.ignore(256, '\n'); cin >> x; }
Fungsi cin.clear() mengosongkan bendera failbit, manakala cin.ignore(256, 'n') melangkau baki aksara input sehingga aksara baris baharu pertama atau 256 aksara, yang mana datang dahulu.
Sebagai alternatif, jika pengguna boleh memasukkan rentetan bukan integer, anda boleh membaca input sebagai rentetan, semak sama ada ia mengandungi nombor sahaja, dan tukarkannya kepada integer. Walau bagaimanapun, pendekatan ini mungkin tidak sesuai untuk kes di mana nombor titik terapung dijangkakan.
Ringkasnya, coretan kod yang disediakan membolehkan anda menyemak sama ada input daripada aliran input standard ialah integer. Jika tidak, anda boleh mengendalikan situasi dengan sewajarnya, memastikan bahawa hanya nilai integer yang sah diterima dalam program anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan Input Integer dengan Berkesan daripada Pengguna dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!