首页 > 后端开发 > C++ > 如何使用 C 流可靠地处理无效数字输入?

如何使用 C 流可靠地处理无效数字输入?

Barbara Streisand
发布: 2024-12-28 15:11:14
原创
998 人浏览过

How Can C   Streams Be Used to Reliably Handle Invalid Numeric Input?

使用 C Streams 解决无效输入

问题:

提供的代码旨在防止非数字字符接受作为输入。但是,它无法处理输入在有效数字后包含字符的情况。

建议的解决方案:

要解决此问题,我们建议采用不同的方法使用 std::getline 和 std::string。

代码片段:

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

说明:

此修订后的解决方案遵循以下步骤:

  1. 阅读全文line: 使用 std::getline,输入的整行,包括空格和特殊字符,是取入字符串变量 line。
  2. 将字符串转换为 double: 创建一个 std::stringstream 对象 ss 来保存字符串 line。然后使用该流使用 >> 来提取数值。
  3. 检查转换是否成功:如果 ss 流成功提取数字并到达字符串末尾,则表明数字输入有效。
  4. 处理错误:如果转换失败,会显示错误信息。

这种方法确保仅接受有效的实数作为输入,无论输入中是否有任何尾随字符或空格。

以上是如何使用 C 流可靠地处理无效数字输入?的详细内容。更多信息请关注PHP中文网其他相关文章!

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