Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencegah Gelung Infinite Apabila Memasukkan Nilai Bukan Angka dalam C ?
Gelung Infinite apabila Memasukkan Huruf Daripada Nombor
Apabila menghadapi input aksara dan bukannya integer, kod yang disediakan akan jatuh ke dalam gelung tak terhingga sambil memaparkan mesej "Nombor yang anda masukkan adalah negatif. Sila masukkan nombor positif untuk meneruskan." Ini berlaku disebabkan oleh perkara berikut:
Isu:
Strim cin tidak dikendalikan dengan betul apabila ia menemui input tidak sah (karakter dalam kes ini). Ia meninggalkan strim dalam keadaan yang salah, dikenali sebagai bendera "failbit" sedang ditetapkan.
Penyelesaian:
Untuk menyelesaikan isu ini, laksanakan langkah berikut:
Semak input yang berjaya apabila membaca nombor (menggunakan cin dengan operator manipulasi aliran >>):
while (!(cin >> num1)) { cout << "Incorrect input. Please try again.\n"; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); }
Kosongkan strim dan abaikan aksara input yang salah jika cin gagal (menggunakan clear() dan ignore()):
Dengan melaksanakan langkah-langkah ini, program akan mengesan input yang tidak sah, mengosongkan strim dan menggesa pengguna untuk memasukkan integer positif, membenarkan atur cara diteruskan tanpa gelung tak terhingga.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Gelung Infinite Apabila Memasukkan Nilai Bukan Angka dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!