要实现上面的输入输出,如果代码是下面这样的,得不到正确的结果。原因在于:
比如说输入 1 2 3回车,cin读取到3的时候,result还没来的及加,cin.get()已经把回车键读了,并输出了result
#include "stdafx.h"
# include <iostream>
using namespace std;
int main(){
int a;
int result = 0;
while (cin>>a ){ //cin会忽略非可见字符,而cin.get()会读取所有的字符
if (cin.get() == '\n') {
cout << result << endl;
result = 0;
continue;
}
result += a;
}
return 0;
}
正确做法:交换一下if语句和result+=a的顺序,这样,cin读取的3才来的及加上去
#include "stdafx.h"
# include <iostream>
using namespace std;
int main(){
int a;
int result = 0;
while (cin>>a ){ //cin会忽略非可见字符,而cin.get()会读取所有的字符
result += a;
if (cin.get() == '\n') {
cout << result << endl;
result = 0;
continue;
}
}
return 0;
}
总结:
- cin>> 会跳过空格和换行符,cin.get()读取所有的字符
- 而且cin>> 与 cin.get()是顺序读取的
cin.get()不只是读最后的换行符,它一直在读空格,直到字符后面没空格,直接接换行符时,输出结果
网友评论