
在了解cin功能時,不得不提标準輸入緩沖區。當我們從鍵盤輸入字元串的時候需要敲一下Enter鍵才能夠将這個字元串送入到緩沖區中,那麼敲入的這個Enter鍵(\r)會被轉換為一個換行符\n,這個換行符\n也會被存儲在cin的緩沖區中并且被當成一個字元來計算!比如我們在鍵盤上敲下了123456這個字元串,然後敲一下Enter鍵(\r)将這個字元串送入了緩沖區中,那麼此時緩沖區中的位元組個數是7 ,而不是6。
cin讀取資料也是從緩沖區中擷取資料,緩沖區為空時,cin的成員函數會阻塞等待資料的到來,一旦緩沖區中有資料,就觸發cin的成員函數去讀取資料
使用cin從标準輸入讀取資料時,通常用到的方法有cin>>,cin.get,cin.getline
cin可以連續從鍵盤讀取想要的資料,以空格、tab或換行作為分隔符
注意:
(1)當cin>>從緩沖區中讀取資料時,若緩沖區中第一個字元是空格、tab或換行這些分隔符時,cin>>會将其忽略并清除,繼續讀取下一個字元,若緩沖區為空,則繼續等待。但是如果讀取成功,字元後面的分隔符是殘留在緩沖區的,cin>>不做處理。
(2)不想略過空白字元,那就使用 noskipws 流控制。比如cin>>noskipws>>input;
看