无效输入和 cin 的无限循环
使用 cin 读取输入时,如果输入不属于则可能会发生无限循环预期类型。当尝试输入数字但意外输入字符时,这个问题尤其明显。
问题源于 cin 遇到无效输入时进入失败状态。在这种情况下,cin 将不再提示输入,从而导致无限循环。
为了防止这种行为,一种解决方案是检查 cin 是否处于失败状态。如果是,则清除失败状态,并使用 cin.ignore() 丢弃错误输入。这允许 cin 返回正常操作并提示进一步输入。
if (cin.fail()) { cout << "ERROR -- Invalid input detected" << endl; cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }
或者,您可以使用 std::getline() 将输入作为字符串读取,并在尝试之前执行更复杂的验证检查将其转换为数字。这种方法提供了更大的灵活性,并允许更复杂的输入验证。
以上是如何防止'cin”无效输入导致的无限循环?的详细内容。更多信息请关注PHP中文网其他相关文章!