Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengendalikan Input Tidak Sah dalam C dengan Anggun?

Bagaimanakah Saya Boleh Mengendalikan Input Tidak Sah dalam C dengan Anggun?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 22:00:21239semak imbas

How Can I Gracefully Handle Invalid Input in C  ?

Mengatasi Input Tidak Sah dalam C

Dalam C , pengesahan input adalah penting untuk mengendalikan input pengguna yang tidak dijangka atau tidak betul. Ini memastikan program anda boleh mengendalikan senario input yang pelbagai dan mengelakkan kemungkinan ralat.

Pertimbangkan situasi di mana program anda meminta integer tetapi sebaliknya menerima aksara. Untuk mengelakkan gelung tak terhingga yang disebabkan oleh ketidakpadanan ini, adalah penting untuk mengosongkan bendera input buruk yang ditetapkan oleh std::cin dan buang input tidak sah.

// Clear bad input flag and discard invalid input
while (std::cout << "Enter a number" && !(std::cin >> num)) {
    std::cin.clear(); // Clear bad input flag
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Discard input
    std::cout << "Invalid input; please re-enter.\n";
}

Coretan kod ini menyemak jika operasi input gagal, kemudian mengosongkan bendera input buruk menggunakan std::cin.clear() dan membuang input tidak sah dengan std::cin.ignore(). Dengan menggelung sehingga input yang sah diterima, atur cara anda boleh menghalang gelung tak terhingga dan mengendalikan input tidak sah dengan anggun.

Sebagai alternatif, anda boleh menangkap input sebagai rentetan dan menukarnya kepada integer menggunakan std::stoi atau kaedah lain yang membolehkan pengesahan penukaran. Pendekatan ini memberikan fleksibiliti dalam mengendalikan pelbagai senario input.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Input Tidak Sah dalam C dengan Anggun?. 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