C++ cin 实现循环读入
生活随笔
收集整理的这篇文章主要介绍了
C++ cin 实现循环读入
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
习惯了使用while(~scanf("%d",x)){}来实现循环读入,但是有时候使用泛型编程的时候就必须使用C++中的cin,但是当我想要实现循环读入的时候却发现有些困难。
我们可以看一下下面这个简单的例子:
#include <iostream>using namespace std;int main() {int n;while(cin>>n){cout<<n<<endl;}int x;cout<<"请输入x:"; cin>>x;cout<<"x的值为"<<x<<endl;return 0; }运行结果:
这和我们想要的不一样。为了能够使用cin进行循环读入,就必须使用cin的一些成员函数
实际上我们使用cin读取失败以后会有一个错误的标志位,cin.fail()将会为真。如果我们不清除的话是没有办法再使用cin的。因此使用失败后应该cin.clear()方法清除标志位
但是此时还是不能正常读取,这是因为缓冲区中仍然是那个错误的输入,为了解决这个问题,我们可以使用cin.ignore()清除缓冲区,这样就可以重新输入啦。
这两个方法还可以带参数,但是简单使用的话不用考虑那么多。
然后我们就能够使用cin循环读入啦。
#include <iostream>using namespace std;int main() {int n;cin>>n;while(cin.fail() == false)//没有发生错误{cout<<n<<endl;cin>>n;}cin.clear(); cin.ignore();int x;cout<<"请输入x:"; cin>>x;cout<<"x的值为"<<x<<endl;return 0; }运行结果
总结
以上是生活随笔为你收集整理的C++ cin 实现循环读入的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 成都大熊猫繁育基地几点闭园
- 下一篇: C++Primer学习笔记:第2章 变量