首页 > 后端开发 > C++ > 如何在 C 中使用'cin”实现可靠的输入验证?

如何在 C 中使用'cin”实现可靠的输入验证?

Linda Hamilton
发布: 2024-12-29 04:51:09
原创
267 人浏览过

How Can I Implement Robust Input Validation with `cin` in C  ?

C 中 cin 的良好输入验证循环

作为 C 初学者,了解有效的输入验证技术至关重要。当使用标准输入流 cin 时,这一点尤其重要。在本文中,我们将探索一种常见的基于循环的方法来验证用户输入,并重点介绍一种通常被认为更干净、更简洁的替代方法。

原始循环:

您构建的输入验证循环使用 do-while 循环来重复提示用户输入并检查错误:

int taxableIncome;
int error;

do {
    error = 0;
    cout << "Please enter in your taxable income: ";
    cin >> taxableIncome;
    if (cin.fail()) {
        cout << "Please enter a valid integer" << endl;
        error = 1;
        cin.clear();
        cin.ignore(80, '\n');
    }
} while (error == 1);
登录后复制

替代方法:

另一种方法涉及使用 for 循环并检查 cin 输入流中的错误循环:

int taxableIncome;

for (;;) {
    cout << "Please enter in your taxable income: ";
    if (cin >> taxableIncome) {
        break; // Valid input received
    } else {
        cout << "Please enter a valid integer" << endl;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
}
登录后复制

比较:

两种方法都实现了输入验证的目标,但替代方法具有一定的优势:

  • 更短、更简洁:消除了错误的需要flag.
  • 对忽略的字符没有限制: 使用 numeric_limits::max() 忽略所有剩余字符,直到遇到换行符,而不是任意值 80。
  • 增强错误处理的潜力:如果需要,您可以在内部单独处理不同类型的输入错误

结论:

虽然原始循环是验证输入的函数式方法,但许多 C 程序员更喜欢替代方法,因为它的简单性和灵活性。通过删除不必要的变量并使用标准库函数,它为输入验证提供了更精简、更高效的解决方案。

以上是如何在 C 中使用'cin”实现可靠的输入验证?的详细内容。更多信息请关注PHP中文网其他相关文章!

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