使用`std :: cin`为整数变量输入`char`时的不确定行为

紫邹

我有一个while循环,只是检查输入的数字是否为2。如果用户无意中输入了字母而不是数字,即使我添加了isdigit,循环也会变为无穷大,但并没有解决循环问题如果输入的字符是疯狂的。这是代码:

int num1;
bool cond {false};
while(!cond){
    cout<<"enter 2:";
    cin>>num1;
    if (!isdigit(num1)){
        cout<<"not a digit:";
        cin>>num1;
    }
    //
    if(num1 == 2)
        cond = true;
}
Geno C

我建议尝试一些更简单的方法,而不是您当前的代码:

#include <iostream>
#include <limits>
using namespace std;

int main()
{
   int num1;
   cout << "Please enter the number 2:";
   cin >> num1;
   while (num1 != 2)
   {
       cin.clear(); //Clears the error flag on cin. 
       cin.ignore(numeric_limits<streamsize>::max(), '\n');
       cout << "You did not enter the number 2, Please try again:";
       cin >> num1;
   }
   
   return 0;

}

现在,cin.ignore(numeric_limits<streamsize>::max(), '\n');是何时忽略直到'\n'或是EOF \n分隔符的含义,即分隔符cin将停止忽略的字符

此外,numeric_limits<streamsize>::max()基本上是说对要忽略的字符数没有限制。

您需要使用头文件#include<limits>来使用它。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用std :: cin中的std :: setw限制输入大小

来自分类Dev

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

来自分类Dev

使用pthread时的Bizzare std :: string行为

来自分类Dev

使用带负数的系统函数$ urandom_range(minval,maxval)时的不确定行为

来自分类Dev

使用std :: array时输入流问题

来自分类Dev

使用std :: regex过滤输入

来自分类Dev

使用std :: map :: at时出错

来自分类Dev

在opengl应用程序中使用std :: cin进行std :: thread和输入

来自分类Dev

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

来自分类Dev

在成对的std :: vector上使用std :: count的意外行为

来自分类Dev

使用时如何重设std :: cin?

来自分类Dev

使用std :: cin忽略/跳过令牌

来自分类Dev

使用std :: cin忽略/跳过令牌

来自分类Dev

使用时如何重设std :: cin?

来自分类Dev

在使用某些不确定的循环时显示

来自分类Dev

在std :: cout之后使用std :: cin时,换行符从何而来?

来自分类Dev

如何为std :: list变量使用std :: unique_ptr

来自分类Dev

当使用`using namespace std`时std :: isgraph不明确

来自分类Dev

使用std :: vector <std :: string> myString时出错

来自分类Dev

在C ++中使用cin在int变量中输入char和int

来自分类Dev

如何使用get std :: bind行为

来自分类Dev

使用长双精度而不是双精度的不确定行为

来自分类Dev

使用(STL)副本具有不确定的行为?

来自分类Dev

不确定使用“ wrb”模式打开文件的行为

来自分类Dev

使用std :: string而不是char *不好吗?

来自分类Dev

使用std :: getline检测输入结束

来自分类Dev

使用std :: ifstream进行输入验证

来自分类Dev

使用变量类型的std :: function运行线程

来自分类Dev

使用C ++ std :: cin时发生溢出错误,在变量(C ++ 11)内具有奇怪的值

Related 相关文章

  1. 1

    使用std :: cin中的std :: setw限制输入大小

  2. 2

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

  3. 3

    使用pthread时的Bizzare std :: string行为

  4. 4

    使用带负数的系统函数$ urandom_range(minval,maxval)时的不确定行为

  5. 5

    使用std :: array时输入流问题

  6. 6

    使用std :: regex过滤输入

  7. 7

    使用std :: map :: at时出错

  8. 8

    在opengl应用程序中使用std :: cin进行std :: thread和输入

  9. 9

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

  10. 10

    在成对的std :: vector上使用std :: count的意外行为

  11. 11

    使用时如何重设std :: cin?

  12. 12

    使用std :: cin忽略/跳过令牌

  13. 13

    使用std :: cin忽略/跳过令牌

  14. 14

    使用时如何重设std :: cin?

  15. 15

    在使用某些不确定的循环时显示

  16. 16

    在std :: cout之后使用std :: cin时,换行符从何而来?

  17. 17

    如何为std :: list变量使用std :: unique_ptr

  18. 18

    当使用`using namespace std`时std :: isgraph不明确

  19. 19

    使用std :: vector <std :: string> myString时出错

  20. 20

    在C ++中使用cin在int变量中输入char和int

  21. 21

    如何使用get std :: bind行为

  22. 22

    使用长双精度而不是双精度的不确定行为

  23. 23

    使用(STL)副本具有不确定的行为?

  24. 24

    不确定使用“ wrb”模式打开文件的行为

  25. 25

    使用std :: string而不是char *不好吗?

  26. 26

    使用std :: getline检测输入结束

  27. 27

    使用std :: ifstream进行输入验证

  28. 28

    使用变量类型的std :: function运行线程

  29. 29

    使用C ++ std :: cin时发生溢出错误,在变量(C ++ 11)内具有奇怪的值

热门标签

归档