增强输入验证:仅接受数字输入
使用 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中文网其他相关文章!