即使我调用ignore()和clear(),std :: cin也会循环

用户名

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

我一直在寻找解决方案,并尝试使用ignore()clear(),但是它仍然没有停止。

您能纠正我在这里错的地方吗?

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

当流处于错误状态时,

  cin.ignore();

什么也没做。您需要先致电,cin.clear()然后再致电cin.ignore()

此外,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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

cin和循环问题

来自分类Dev

std::cin 导致无限循环

来自分类Dev

cin >>整数和while循环

来自分类Dev

来自无效输入的std :: cin无限循环

来自分类Dev

std :: cin无限循环输入错误

来自分类Dev

使用std :: cin输入停止while循环

来自分类Dev

我的cin在while循环中被忽略

来自分类Dev

Cin和Cout对象如何循环工作

来自分类Dev

While循环和cin char,int

来自分类Dev

即使我使用cin.ignore(),C ++ cin也被跳过

来自分类Dev

cin.clear()和cin.ignore()无法正常工作

来自分类Dev

使用std :: cin >>时可能会丢弃返回字符?

来自分类Dev

即使未调用方法[Java],while循环也会结束

来自分类Dev

在while循环中如何评估“ std :: cin >> value”?

来自分类Dev

我可以循环直到 `std::cin` 在输入缓冲区中看到 `\n` 字符吗?

来自分类Dev

使用 cin.ignore 和 cin.clear CPP 时的奇怪行为

来自分类Dev

即使我将其设置为不循环,HTML 5视频也会继续循环播放

来自分类Dev

即使我将其设置为不循环,HTML 5视频也会继续循环播放

来自分类Dev

为什么我的程序在For循环的第一个循环后跳过cin>>?

来自分类Dev

为什么我的 If/Else 循环会跳出 For 循环?

来自分类Dev

为什么我的 for 循环会乱序打印和生成图形?

来自分类Dev

为什么std :: cin的提取操作符会等待用户输入?

来自分类Dev

getline和cin接连使用会跳过下一个输入

来自分类Dev

递归函数陷入无限循环。即使在返回语句评估之后,控制也会返回到函数调用

来自分类Dev

(C ++)不会在std :: cin上停止并进入无限循环吗?

来自分类Dev

(C ++)不会在std :: cin上停止并进入无限循环吗?

来自分类Dev

即使使用正确的密码,Ubuntu 18.04也会登录循环

来自分类Dev

为什么即使 WHILE 循环更改为 False 也会重复

来自分类Dev

为什么即使条件不正确我的 while 循环也会执行?

Related 相关文章

  1. 1

    cin和循环问题

  2. 2

    std::cin 导致无限循环

  3. 3

    cin >>整数和while循环

  4. 4

    来自无效输入的std :: cin无限循环

  5. 5

    std :: cin无限循环输入错误

  6. 6

    使用std :: cin输入停止while循环

  7. 7

    我的cin在while循环中被忽略

  8. 8

    Cin和Cout对象如何循环工作

  9. 9

    While循环和cin char,int

  10. 10

    即使我使用cin.ignore(),C ++ cin也被跳过

  11. 11

    cin.clear()和cin.ignore()无法正常工作

  12. 12

    使用std :: cin >>时可能会丢弃返回字符?

  13. 13

    即使未调用方法[Java],while循环也会结束

  14. 14

    在while循环中如何评估“ std :: cin >> value”?

  15. 15

    我可以循环直到 `std::cin` 在输入缓冲区中看到 `\n` 字符吗?

  16. 16

    使用 cin.ignore 和 cin.clear CPP 时的奇怪行为

  17. 17

    即使我将其设置为不循环,HTML 5视频也会继续循环播放

  18. 18

    即使我将其设置为不循环,HTML 5视频也会继续循环播放

  19. 19

    为什么我的程序在For循环的第一个循环后跳过cin>>?

  20. 20

    为什么我的 If/Else 循环会跳出 For 循环?

  21. 21

    为什么我的 for 循环会乱序打印和生成图形?

  22. 22

    为什么std :: cin的提取操作符会等待用户输入?

  23. 23

    getline和cin接连使用会跳过下一个输入

  24. 24

    递归函数陷入无限循环。即使在返回语句评估之后,控制也会返回到函数调用

  25. 25

    (C ++)不会在std :: cin上停止并进入无限循环吗?

  26. 26

    (C ++)不会在std :: cin上停止并进入无限循环吗?

  27. 27

    即使使用正确的密码,Ubuntu 18.04也会登录循环

  28. 28

    为什么即使 WHILE 循环更改为 False 也会重复

  29. 29

    为什么即使条件不正确我的 while 循环也会执行?

热门标签

归档