关于while (cin >> a)
的一点想法
#include <iostream>
using namespace std;
int main() {
int a;
while (cin >> a) {
cout << a << endl;
}
retutrn 0;
}
在输入时int型的时候,输入的值传递给a,但是如果输入一个char类型,此时cin接收的不是int型,就会跳出while循环,a也就不能接收到值
在这里想说的是,cin接收输入的时候会自动跳过空格和回车,所以空格和换行不输入并不能结束这个循环,只有输入与int型不符的类型或者EOF才可以结束输入
当然也可以用get()
判定输入的是不是回车,但是这样对于我们想多行输入的时候就会造成阻碍,也不太可取,只要有换行的时候输入就会停止
while(cin>>a){
...
if(cin.get()=='\n') break;
还有一种写法是
while (cin) {
cin >> x;
}
这样的写法导致只有cin有输入就会执行,但是不是x的类型的时候,x不会接收,而是会用旧值执行一遍,这样来看就要尽量避免这种情况出现
总体来说,如果不能保证结尾是EOF判定输入结束的话,仍有可能程序会卡在输入上,执行不下去,就需要认为的判定输入的个数,然后加条件跳出循环。
参考:What’s the difference between while(cin) and while(cin >> num)