用 cin 输入整数死循环问题


本文,主要解决用标准库输入流std::cin输入整数的时候,如果误输入了字符产生的死循环问题。

这也许是C++灵活的背后,给程序员所带来的一些问题,这个问题标准库的建设者们确实应该考虑升级一下。
最近,见论坛里又常有人问起,方法比较简单,代码如下:


#include<iostream>
#include <limits>

// 带容错功能的控制台整数输入函数
int input_int()
{
    int n;
    // 处理输入字符时的死循环异常
    while (!(std::cin >> n) || std::cin.peek() != '\n')
    {
        std::cin.clear();// 恢复状态标志
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');// 略过缓存
        std::cerr << "输入数据错误,请重新输入:" << std::endl;
    }
    return n;
}

int main()
{
    std::cout << input_int() << " ,输入成功结束" << std::endl;
    system("pause");
    return 0;
}


阅读更多
文章标签: input system c
个人分类: C/C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭