C++ cin和cin.get()的区别

2020-09-10  本文已影响0人  吵吵人

要实现上面的输入输出,如果代码是下面这样的,得不到正确的结果。原因在于:
比如说输入 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;
}

总结:

上一篇下一篇

猜你喜欢

热点阅读