一个常见的编程任务是验证用户输入以确保其满足特定条件。其中一个标准是确保输入是有效的浮点数,特别是双精度数。以下是如何在 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中文网其他相关文章!