Masalah:
Kod yang disediakan bertujuan untuk menghalang aksara bukan angka daripada menjadi diterima sebagai input. Walau bagaimanapun, ia gagal mengendalikan situasi di mana input termasuk aksara selepas nombor yang sah.
Penyelesaian Cadangan:
Untuk menangani isu ini, kami cadangkan menggunakan pendekatan yang berbeza menggunakan std::getline dan std::string.
Kod Coretan:
#include <string> #include <sstream> int main() { std::string line; double d; while (std::getline(std::cin, line)) { std::stringstream ss(line); if (ss >> d) { if (ss.eof()) { // Success break; } } std::cout << "Error!" << std::endl; } std::cout << "Finally: " << d << std::endl; }
Penjelasan:
Penyelesaian yang disemak ini mengikut langkah berikut:
Pendekatan ini memastikan bahawa hanya nombor nyata yang sah diterima sebagai input, tanpa mengira sebarang aksara atau ruang di belakang dalam input.
Atas ialah kandungan terperinci Bagaimanakah C Streams Boleh Digunakan untuk Mengendalikan Input Numerik Tidak Sah dengan Amanah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!