首页 > 后端开发 > C++ > 如何确保使用 C 的 `cin` 仅输入数字?

如何确保使用 C 的 `cin` 仅输入数字?

Mary-Kate Olsen
发布: 2024-12-16 07:47:10
原创
771 人浏览过

How Can I Ensure Only Numeric Input Using C  's `cin`?

增强输入验证:仅接受数字输入

使用 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;
}
登录后复制

解释实现

  • std::getline 捕获整个输入行,包括空格和特殊字符字符。
  • std::stringstream 用于将输入行转换为 double数据类型。
  • >>运算符从输入行中提取数值。
  • eof 检查确保在退​​出循环之前整行已成功转换为 double。

结论

通过这种增强的方法,任何输入非数字字符的尝试都将被标记为无效输入,并且用户将被提示重新输入有效号码。该解决方案有效解决了原始代码中出现的问题,确保仅接受有效的数字输入,而不管输入行中是否有任何其他非数字字符。

以上是如何确保使用 C 的 `cin` 仅输入数字?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板