Gelung Infinite dengan Input Tidak Sah dan cin
Apabila menggunakan cin untuk membaca input, gelung tak terhingga boleh berlaku jika input bukan daripada jenis yang dijangkakan. Isu ini amat ketara apabila cuba memasukkan nombor tetapi memasukkan aksara secara tidak sengaja.
Masalahnya berpunca daripada keadaan gagal yang cin masukkan apabila ia menemui input tidak sah. Dalam senario sedemikian, cin akan不再 menggesa input, menghasilkan gelung tak terhingga.
Untuk mengelakkan tingkah laku ini, satu penyelesaian adalah untuk menyemak sama ada cin berada dalam keadaan gagal. Jika ya, keadaan gagal dikosongkan dan input buruk dibuang menggunakan cin.ignore(). Ini membolehkan cin kembali kepada operasi biasa dan menggesa untuk input selanjutnya.
if (cin.fail()) { cout << "ERROR -- Invalid input detected" << endl; cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }
Sebagai alternatif, anda boleh menggunakan std::getline() untuk membaca input sebagai rentetan dan melakukan semakan pengesahan yang lebih canggih sebelum mencuba untuk menukarnya kepada nombor. Pendekatan ini memberikan fleksibiliti yang lebih besar dan membolehkan pengesahan input yang lebih kompleks.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Gelung Infinite Disebabkan oleh Input Tidak Sah dengan `cin`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!