輸入原理:
程式的輸入都建有乙個緩衝區,即輸入緩衝區。一次輸入過程是這樣的,當一次鍵盤輸入結束時會將輸入的資料存入輸入緩衝區,而cin函式直接從輸入緩衝區中取資料。正因為cin函式是直接從緩衝區取資料的,所以有時候當緩衝區中有殘留資料時,cin函式會直接取得這些殘留資料而不會請求鍵盤輸入
一:cin>>
1)該操作符是根據後面變數的型別讀取資料。
輸入結束條件 :遇到enter、space、tab鍵。
對結束符的處理 :丟棄緩衝區中使得輸入結束的結束符(enter、space、tab)
#include using namespace std;
int main()
測試一輸入:
12345[enter]
輸出:1234
53【分析】第一次輸入超長,字串按長度取了"1234",而』5′仍殘留在緩衝區中,所以第二次輸入字元沒有從鍵盤讀入,而是直接取了』5′,所以列印的ascii值是53(』5′的ascii值)。
測試二輸入:
12d45[enter]
輸出:12
d【分析】第二次輸出為d,說明自定義結束符時不丟棄緩衝區中的結束符
三.cin.getline()
cin.getline(陣列名,長度,結束符) 大體與 cin.get(陣列名,長度,結束符)類似。
區別在於:
cin.get()當輸入的字串超長時,不會引起cin函式的錯誤,後面的cin操作會繼續執行,只是直接從緩衝區中取資料。但是cin.getline()當輸入超長時,會引起cin函式的錯誤,後面的cin操作將不再執行。
#5:
#include測試輸入:using
namespace std;
int main ()
12345[enter]
輸出:1234
-52【分析】與cin.get()的例子比較會發現,這裡的ch並沒有讀取緩衝區中的5,而是返回了-52,這裡其實cin>>ch語句沒有執行,是因為cin出錯了!cin的錯誤處理下次介紹。
C 輸入cin詳解
輸入原理 程式的輸入都建有乙個緩衝區,即輸入緩衝區。一次輸入過程是這樣的,當一次鍵盤輸入結束時會將輸入的資料存入輸入緩衝區,而cin函式直接從輸入緩衝區中取資料。正因為cin函式是直接從緩衝區取資料的,所以有時候當緩衝區中有殘留資料時,cin函式會直接取得這些殘留資料而不會請求鍵盤輸入 1 incl...
C 輸入cin詳解
輸入原理 程式的輸入都建有乙個緩衝區,即輸入緩衝區。一次輸入過程是這樣的,當一次鍵盤輸入結束時會將輸入的資料存入輸入緩衝區,而cin函式直接從輸入緩衝區中取資料。正因為cin函式是直接從緩衝區取資料的,所以有時候當緩衝區中有殘留資料時,cin函式會直接取得這些殘留資料而不會請求鍵盤輸入 1 incl...
C 輸入cin詳解
輸入原理 程式的輸入都建有乙個緩衝區,即輸入緩衝區。一次輸入過程是這樣的,當一次鍵盤輸入結束時會將輸入的資料存入輸入緩衝區,而cin函式直接從輸入緩衝區中取資料。正因為cin函式是直接從緩衝區取資料的,所以有時候當緩衝區中有殘留資料時,cin函式會直接取得這些殘留資料而不會請求鍵盤輸入 1 incl...