gpt4 book ai didi

c++ - std::cin 循环,即使我调用 ignore() 和 clear()

转载 作者:搜寻专家 更新时间:2023-10-31 01:34:46 25 4
gpt4 key购买 nike

我正在尝试设置一个输入检查循环,以便它不断要求用户输入有效(整数),但它似乎陷入了无限循环。

我已经搜索了解决方案并尝试了 ignore()clear(),但它仍然没有停止。

你能纠正我这里的错误吗?

int num;
cin >> num;
while (cin.fail()) {
cin.ignore();
cin.clear();
cout << "Enter valid number: " << endl;
cin >> num;
}

最佳答案

当流处于错误状态时,

  cin.ignore();

什么都不做。在调用 cin.ignore() 之前,您需要先调用 cin.clear()

此外,cin.ignore() 将只忽略一个字符。要忽略一行输入,请使用:

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

添加

#include <limits>

能够使用 std::numeric_limits

修复后的代码块看起来像这样:

int num;
while ( !(cin >> num) ) {
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout << "Enter valid number: " << endl;
}

关于c++ - std::cin 循环,即使我调用 ignore() 和 clear(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38680441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com