美文网首页
C++ cin和cin.get()的区别

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

作者: 吵吵人 | 来源:发表于2020-09-10 17:04 被阅读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;
    }
    

    总结:

    • cin>> 会跳过空格和换行符,cin.get()读取所有的字符
    • 而且cin>> 与 cin.get()是顺序读取的
      cin.get()不只是读最后的换行符,它一直在读空格,直到字符后面没空格,直接接换行符时,输出结果

    相关文章

      网友评论

          本文标题:C++ cin和cin.get()的区别

          本文链接:https://www.haomeiwen.com/subject/tbbpektx.html