在while中使用cin>>a为条件要注意哪些事项

发布时间:2022-07-26 09:23:11 作者:iii
来源:亿速云 阅读:141

本篇内容主要讲解“在while中使用cin>>a为条件要注意哪些事项”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在while中使用cin>>a为条件要注意哪些事项”吧!

在while中使用cin>>a 为条件

用一个题目来解释

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

#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显然没有输入进去,程序读不到最后一个数,程序一直保持输入的状态;

在while中使用cin>>a为条件要注意哪些事项

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

在while中使用cin>>a为条件要注意哪些事项

while(cin>>a) cin输入直到回车结束

经常遇到循环输入,直到符合某种条件时结束输入。

cin>>s是有返回值的,只要s满足类型条件,就会return true,一直执行下去,而cin会忽略空格或者enter,因此,enter后不会结束循环。只能ctrl+Z。

其实很简单

通过get()判断下一个输入是不是回车就行。

while(cin>>a){
    ...
    if(cin.get()=='\n') break;
}

举个例子

#include <bits/stdc++.h>
using namespace std;
 
int b[10];
int main() 
{
	int i=0,a;
	while(cin>>a){
		b[i++]=a;
    	if(cin.get()=='\n') break;	
	} 
	for(i=0;i<10;i++) cout<<b[i]<<" ";
}

这里再以创建链表举一个例子

#include <bits/stdc++.h>
using namespace std;
struct ListNode {
	int val;
	ListNode *next;
	ListNode(int x) : val(x), next(NULL) {}
	
};
 
int main()
{
	ListNode* head1 = new ListNode(NULL);
	ListNode* head = new ListNode(NULL);
	head1 = head;
	int a;
	while (cin >> a) {
		ListNode* tmp = new ListNode(a);
		head->next = tmp;
		head = tmp;
		if (cin.get() == '\n') break;
	}
	while (head1->next != NULL) {
		cout << head1->next->val<<endl;
		head1 = head1->next;
	}
	system("pause");
	return 0;
}

运行结果:

在while中使用cin>>a为条件要注意哪些事项

到此,相信大家对“在while中使用cin>>a为条件要注意哪些事项”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. 条件控制之while和for
  2. 在django中使用ManyToMany时需要注意哪些事项

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

while

上一篇:怎么使用Go实现文件分片上传

下一篇:MySQL多版本并发控制MVCC实例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》