C++ cin清理缓冲区
2018.04.06 | C与C++ | 5090 浏览 | 0 赞 | 0 条评论
C++在用cin做输入的时候,尤其是需要输入int型值的时候,往往需要做验证与处理。而对于异常值,则需要先清理缓冲区,再准备下一次输入。
对于清理缓冲区,中文世界的方法有一下几种(或者混着用):
cin.clear();
cin.ignore();
cin.sync();
fflush(stdin);
但是这几种方法都各有各的缺点,不是会造成重复输出错误信息,就是会造成不断的死循环。真正理想的解决方案,StackOverflow上给了很好的解答。那就是混合使用cin.ignore(INT_MAX, 'n')和cin.clear().