Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencegah Gelung Infinite Disebabkan oleh Input Tidak Sah dengan `cin`?

Bagaimana untuk Mencegah Gelung Infinite Disebabkan oleh Input Tidak Sah dengan `cin`?

Susan Sarandon
Susan Sarandonasal
2024-12-31 14:48:12507semak imbas

How to Prevent Infinite Loops Caused by Invalid Input with `cin`?

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!

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