zoukankan      html  css  js  c++  java
  • 标志位与清空缓冲区--???

    让用户输入指定范围内的数字,如果不正确 重新输入

    • cin.fail() 看标志位  0正常 1不正常
    • cin.clear()重置标志位
    • cin.syne() 清空缓冲区  解决不了死循环问题
    void test07()
    {
        int num;
        cout << "请输入0-10的数字" << endl;
        while (true)
        {
            cin >> num; //获取输入的数字
            if (num > 0 && num <= 10)
            {
                cout << "您输入的数字是:" << num << endl;
                break;
            }
            cout << "请重新输入" << endl;    //如果输入的是数字 那么程序运行正常,如果输入的是不是数字类型 那么就会无限循环这句话
                                            //原因是因为标志位  如果cin>>num 数据类型错误 那么标志位会变成1
        }
    
    }

    结果:

    查看标志位

     结果:

     

     解决办法:重置标志位

    void test07()
    {
        int num;
        cout << "请输入0-10的数字" << endl;
        while (true)
        {
            cin >> num; //获取输入的数字
            if (num > 0 && num <= 10)
            {
                cout << "您输入的数字是:" << num << endl;
                break;
            }
            
            //cout << "请重新输入" << endl;    //如果输入的是数字 那么程序运行正常,如果输入的是不是数字类型 那么就会无限循环这句话
                                            //原因是因为标志位  如果cin>>num 数据类型错误 那么标志位会变成1
    
            cin.clear();            //重置标志位
            cin.sync();             //清空缓冲区
            cout << "标志位:" << cin.fail() << endl;   //0 正常 1 错误
        }
    }

    结果:

     问题没解决 还是死循环???

  • 相关阅读:
    闪电侠 Netty 小册里的骚操作
    面试被问烂的 Spring IOC(求求你别再问了)
    面试问烂的 Spring AOP 原理、SpringMVC 过程(求求你别问了)
    使用 Cglib 实现多重代理
    Redis 初次见面
    Apollo 10 — adminService 全量发布
    Apollo 9 — adminService 主/灰度版本发布
    简析限流算法
    Dubbo 源码分析
    Dubbo 源码分析
  • 原文地址:https://www.cnblogs.com/yifengs/p/15185504.html
Copyright © 2011-2022 走看看