C++—— 恢复状态标志和清理缓存(以标准库输入流std::cin输入整数时死循环为例)
标准库输入流std::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(),