c++与c中多组输入的使用

文章讨论了在C语言中如何使用scanf处理多组输入,以及如何通过Ctrl+Z结束输入。同时,对比了C++中的cin进行多组输入,并解释了cin能用作条件判断的原因,涉及到istream对象的bool转换函数。在C++中,当cin遇到EOF时,operatorbool()转换函数会使cin对象转换为false,从而在while循环中终止输入。
摘要由CSDN通过智能技术生成

我们现在看看c中多组输入的使用

int main()
{
	int a;
	//1
	while (~scanf("%d", &a))
	{

	}

	//2
	while (scanf("%d", &a) != EOF)
	{

	}

	return 0;
}

这两个是等同的

我们需要知道的是scanf的返回值是成功读取的个数,我们来验证一下

 我们可以看到,第一个输入了两个数,读取成功之后返回的是2;第二次输入的是1和~z返回的是1---~z是输入结束的标志(并返回0),所以成功读取到的数只有一个

也就是说,我们在进行多组输入的时候,想结束输入,我们可以使用crtl+Z来结束(需要注意的是根据编译器的不同,需要输入的Ctrl+Z的次数也是不同的,有的会输入3次,有的只需输入1次)

c++中的多组输入

首先cin不是函数而是iostream的对象,返回值是重载>>进行返回的,返回的是istream

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ahJpo6qF-1655438506866)(../img/image-20220617114231728.png)]

 我们在实际使用的时候

int main()
{
	int a;
	while (cin >> a)
	{

	}

	return 0;
}

那我们要如何停下来呢???

我们知道在c程序中可以使用Ctrl+Z进行停止输入,我们在这里也是可以的

计算机中有一个函数重载,是返回值转化为bool类型,这也就是为什么输入EOF可以停下来的原因

如果类中没有bool的类型重载

 我们在重载之后

 我们知道一般的重载都是要返回类型的,但是这个为什么不需要呢???

 我们给他加上返回类型后就会报错,这是一个转换函数可以理解成强制类型转换(不需要返回类型)

1scanf是一个函数**,返回值为一个int,代表scanf读入对象的个数,如果其读到EOF结束标志,会返回0相当于false;
2.cin是一个istream类型对象,他能作为判断语句的原因是istream类型中的>>操作符会返回一个istream对象(cin),如果>>读到EOF那么返回的istream对象(cin)中会检测到EOF的存在,那么istream类型的operator bool()转换函数起作用将这个对象(cin)转换成bool类型false作为条件判断;

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值