關於用cin cin.get() getchar(), getline輸入時的結束符問題

來源:互聯網
上載者:User
關於用cin
cin.get() getchar(), getline輸入時的結束符問題

幾個輸入 cin.get(),getchar,cin. getline的賦值問題

 

一,關於這個幾個函數怎麼處理它遇到的第一個字元

 

cin.get()

 

# include <iostream>

# include <string>

using namespace std;

int main()

{

    char a;

    char b;

    a = getchar();

    b = cin.get();             

    cout << a << b << endl;

    system("pause");

    return 0;

}

輸入: a+空格+b+按下斷行符號

輸出

輸入:a+按下斷行符號

可以見到,b字元是空白,或者是一個斷行符號

結論:,cin.get()遇到開頭的空格或者斷行符號直接就讀取賦給b了

 

getchar()

 

將輸入a和b的語句換為如下語句

    char a ,b ;

    a = getchar();

    b = getchar();   

輸入: a+空格+b+按下斷行符號

 

輸入:a+按下斷行符號

 

可以見到,b字元是空白,或者是一個斷行符號

結論:,getchar()和cin.get()一樣,遇到開頭的空格或者斷行符號直接就讀取賦給b了

 

cin

 

將輸入a和b的語句換為如下語句

char a ,b ;  

a = getchar();

    cin >> b;

輸入: a+空格+b+按下斷行符號  

 

輸入:a+按下斷行符號+b+按下斷行符號

 

 

結論 :cin可以跳過開頭的空格和斷行符號

 

getline

 

將輸入a和b的語句換為如下語句

    char a;

    string b

a = getchar();

    getline(cin,b);

輸入: a+空格+b+按下斷行符號

 



輸入:a+按下斷行符號

 

 

結論:getline讀取開頭的空格和斷行符號,不過當讀取到斷行符號時並不是把它賦給了b,而是作為b的結束標識符

 

 

二,關於這幾個字元怎麼處理它的結束符

string a ,b,c;   

    cin >> a;

    b = getchar();      

    cout << a << b  << endl;

輸入:a+斷行符號

 

結論:cin 的結束符是斷行符號,繼續留在了輸出隊列中,被接下來的gechar給讀取了,,,,其他的幾個輸入函數,除了getline也是會保留結束符

 

string a ,b,c;   

    getline(cin,a);

    b = getchar();      

    cout << a << b  << endl;

輸入:a+斷行符號+b+斷行符號

 

結論:getline的結束操作符‘/n’,是會被丟棄的,不會被保留在輸入隊列中的

 

為瞭解決上面留在隊列中的不想要的字元,我們可以通過兩個方法解決

第一個是吃掉這個字元,調用一次cin.get()

第二個是掉過這個字元,調用一次cin.ignore();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.