在while中使用cin>>a 为条件,注意事项

来源:互联网 发布:轩辕剑神器进阶数据 编辑:程序博客网 时间:2024/05/08 09:38

用一个题目来解释

本题为统计输入多少个连续数字

#include<iostream>using namespace std;int main(){int currVal = 0 , val = 0;if(cin >> currVal){int cnt=1;//统计次数while(cin >> val){if(currVal == val){cnt++;}else{cout << currVal <<" occurs "<<cnt<<" times "<<endl;currVal = val;cnt=1;//重新计算另一个 }} //while循环结束 cout << currVal <<" occurs "<<cnt<<" times "<<endl;//打印最后一个数 }//if循环结束 return 0;}

有一个要注意的地方,以前不理解在while里面用cin >> val是什么意思,用这个当条件的话,通过检测其流的状态来判断结束;

(1)若流是有效的,即流未遇到错误,那么检测成功;

(2)若遇到文件结束符,或遇到一个无效的输入时(例如本题输入的值不是一个整数),istream对象的状态会变为无效,条件就为假;

怎样才是文件结束符呢?

不同的操作系统有不同的约定,在windows系统中,输入文件结束符的方法是先按Ctrl+Z,然后再按Enter;在UNIX系统中,包括Mac OS X系统中,文件结束输入为Ctrl+D;

下面是两个输入实例图片,请对比

1.这个直接按enter,最后一个4显然没有输入进去,程序读不到最后一个数,程序一直保持输入的状态;


2.这个是正确实例,上面的Z是按了ctrl的效果


1 0
原创粉丝点击