我们现在看看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
我们在实际使用的时候
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作为条件判断;