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
Lepaskan: 2024-12-31 14:48:12
asal
502 orang telah melayarinya

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');
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan