增強輸入驗證:僅接受數位輸入
使用cin 接收用戶輸入時,強制資料正確性至關重要,尤其是在處理資料時與數值。提供的程式碼遇到一個問題,其中非數字字元(例如“1x”中的“x”)被忽略,可能會導致錯誤的結果。
穩健的解決方案
要修正這個問題,更徹底的方法是使用std::getline 和std::string 捕捉整個輸入行,包括任何非數字字元。以下增強的程式碼片段示範了這種方法:
#include <string> #include <sstream> double enter_number() { double number; std::string line; while (std::getline(std::cin, line)) { std::stringstream ss(line); if (ss >> number) { if (ss.eof()) { // Success break; } } std::cout << "Invalid input" << std::endl; std::cout << "Try again" << std::endl; } return number; }
解釋實作
結論
透過這種增強的方法,任何輸入非數字字元的嘗試都將被標記為無效輸入,並且使用者將被提示重新輸入有效號碼。此解決方案有效解決了原始程式碼中出現的問題,確保僅接受有效的數字輸入,而不管輸入行中是否有任何其他非數字字元。
以上是如何確保使用 C 的 `cin` 只輸入數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!