Satu tugas pengaturcaraan biasa ialah untuk mengesahkan input pengguna untuk memastikan ia memenuhi kriteria tertentu. Satu kriteria sedemikian ialah memastikan input ialah nombor titik terapung yang sah, khususnya dua kali ganda. Begini cara anda boleh mendekati pengesahan ini dalam C :
double x; while (1) { cout << ">"; if (cin >> x) { // valid number break; } else { // not a valid number cout << "Invalid Input! Please input a numerical value." << endl; } }
Kod ini menyediakan pengesahan asas dengan cuba membaca dua kali daripada input standard. Jika input berjaya dibaca, anda meneruskan program. Jika tidak, mesej ralat dipaparkan.
Walau bagaimanapun, kod di atas mungkin menyebabkan program mengeluarkan mesej ralat secara berterusan walaupun untuk input yang sah. Ini kerana cin >> baris x gagal pada input tidak sah, meninggalkan bendera ralat ditetapkan dalam aliran input. Untuk menyelesaikan isu ini, anda perlu mengosongkan keadaan ralat selepas input tidak sah dikesan.
while (1) { if (cin >> x) { // valid number break; } else { // not a valid number cout << "Invalid Input! Please input a numerical value." << endl; cin.clear(); while (cin.get() != '\n') ; // empty loop to discard invalid input } }
Barisan cin.clear() mengosongkan bendera ralat dan gelung kosong seterusnya menggunakan aksara tidak sah yang tinggal pada baris input. Ini memastikan percubaan input seterusnya bermula dengan catatan yang bersih.
Dengan mengikuti langkah ini, anda boleh mengesahkan input pengguna dengan berkesan sebagai dua kali ganda dalam C , menyediakan mekanisme pengesahan input yang mantap dan mesra pengguna.
Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Input Pengguna dengan Teguh sebagai Double dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!