Membuat cin Nombor Baca Sahaja
Menguatkuasakan input berangka menggunakan cin boleh menimbulkan cabaran, terutamanya apabila mengendalikan jenis input bercampur. Artikel ini menyiasat penyelesaian untuk memastikan bahawa cin hanya menerima nilai berangka.
Dalam kod yang disediakan, manakala gelung cuba membetulkan input yang tidak sah dengan mengabaikan aksara bukan berangka. Walau bagaimanapun, kaedah ini menghadapi had apabila berurusan dengan berbilang input.
Penyelesaian: Menggunakan std::getline dan std::string
Untuk mengatasi halangan ini, kita boleh menggunakan pendekatan yang lebih komprehensif:
Tukar rentetan kepada double menggunakan std::stringstream:
Sahkan penukaran:
Berikut ialah contoh pelaksanaan:
#include <sstream> #include <string> 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; }
Penyelesaian ini memastikan kedua-dua integer dan nombor titik terapung diproses dengan betul , dengan aksara bukan berangka dibuang sepenuhnya.
Atas ialah kandungan terperinci Bagaimana untuk Membuat `cin` Hanya Terima Input Berangka dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!