c++cin输入读取错误的缓冲问题

在c++里面如果cin读取的数据类型和变量不同的话
例如、

int n;
cin >> n;
cout << n << endl;

如果在标准输入中输入大于int_max的数或者字符串的话,cin就会读入失败,将输入值存入缓冲区,如果不及时处理的话,就可能会造成不断循环读入这个不合适的值而死循环。
解决方法就是在cin读取语句后加一个判断语句cin.fail();如果读取失败的话这个函数会返回1,否则返回0,因而我们可以这样写

for (;;) {
	cin >> n;
	if (cin.fail()) {
		cin.clear();
		continue;
	}
	cout << n << endl;
}

这样就解决问题了


版权声明:本文为qq_26078587原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。