首页 >后端开发 >C++ >如何在 C 中稳健地验证用户输入为 Double ?

如何在 C 中稳健地验证用户输入为 Double ?

Susan Sarandon
Susan Sarandon原创
2024-12-22 20:54:10346浏览

How to Robustly Validate User Input as a Double in C  ?

在 C 中验证用户输入为双精度

一个常见的编程任务是验证用户输入以确保其满足特定条件。其中一个标准是确保输入是有效的浮点数,特别是双精度数。以下是如何在 C 中进行此验证:

基本验证方法

double x;

while (1) {
  cout << ">";
  if (cin >> x) {
    // valid number
    break;
  } else {
    // not a valid number
    cout << "Invalid Input! Please input a numerical value." << endl;
  }
}

此代码通过尝试从标准输入读取双精度值来提供基本验证。如果成功读取输入,则继续执行程序。否则,会显示错误消息。

修复无限输入循环

但是,上述代码可能会导致即使输入有效,程序也会不断输出错误消息。这是因为 cin>> x 行因无效输入而失败,并在输入流中留下错误标志集。要解决此问题,需要在检测到无效输入后清除错误状态。

while (1) {
  if (cin >> x) {
    // valid number
    break;
  } else {
    // not a valid number
    cout << "Invalid Input! Please input a numerical value." << endl;
    cin.clear();
    while (cin.get() != '\n') ; // empty loop to discard invalid input
  }
}

cin.clear() 行清除错误标志,后续的空循环会消耗剩余的无效字符在输入线上。这可确保下一次输入尝试从头开始。

通过执行以下步骤,您可以有效地将用户输入验证为 C 中的双精度,从而提供强大且用户友好的输入验证机制。

以上是如何在 C 中稳健地验证用户输入为 Double ?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn