C++輸入總結

學了編程4年了,輸入輸出一直都在用,但一直都處在模模糊糊的狀態。每次使用是都得現查,今天把這個好好總結下,方便以後使用。

這裏只關注實際的使用,理論上暫且不管。

這兒主要關注以下幾個函數:
(1)、cin(這個也就暫且當它是個函數吧)
(2)、get
(3)、getline
(4)、gets
(5)、getchar

一、cin
這個cin是istream對象,從標準輸入中讀取數據。要注意的是有一個緩衝區,即輸入緩衝區。一次輸入過程是這樣的,當一次鍵盤輸入結束時會將輸入的數據存入輸入緩衝區,而cin函數 直接從輸入緩衝區中取數據它基本的讀取規則是:cin是遇到回車停止輸入,按照空格輸出的。空格、回車等會被丟棄(這些還在緩衝區中,下次若用cin會自動丟棄),下次又會讀取流中剩下的內容。

所以說,在讀取字符串的時候一般使用cin>>string; 但是就像上面說的使用cin>>是不能讀取帶有 空格、回車之類的字符串的。

二、get
get可以讀取包含空格符、回車符、製表符在內的幾乎所有字符,它的結束條件是回車。它的使用主要包括以下兩部分
1、讀入單個字符:讀入單個任意字符可以使用cin.get(ch)和ch=cin.get()。基本上使用區別不大,具體的比較見下圖。
cin.get()與cin.get(ch區別)

2、讀入多個任意字符:常用的有以下兩種

    (1)、cin.get(數組名,接收字符數目) //默認截止字符換行符
    (2)、cin.get(數組名,接收字符數目,截至字符)

注意:以上兩個函數在遇到截至字符時,本次讀取完畢,但是截止字符依然保持在流中。所以如果想要讀取一串帶回車符的字符串,使用第一種方式是不行的,因爲它把回車符當成了截止字符,會自動停止讀入,這樣的話就只能採取第二種方式了。

三、getline
對於getline來說,這裏包含兩部分。
1、cin的成員函數即:cin.getline:這種方式主要有兩種用法:

(1)、cin.getline(數組名,接收字符數目) //默認截止字符換行符
(2)、cin.getline(數組名,接收字符數目,截至字符)

與上面的get讀入多個字節函數類似。但是需要注意的是getline()函數會自動丟棄換行符等分界符。

2、string的成員函數即:getline()。與上面的類似,這種方式也主要有兩種用法:

 (1)、getline(cin,string類型)
 (2)、getline(cin,string類型,截止字符)

基本用法和上一種cin成員函數方式差不多,不同的是接收的時候一個是數組,一個是string類型。

四、gets

gets(s);

其中s爲字符串變量(字符串數組名或字符串指針)。

但是這個函數沒有內存檢查機制,在C11中已經刪除,所以不推薦使用。

五、getchar
getchar()接受一個字符輸入,包含空格,遇到回車停止。和cin.get()接收一個字符差不多。不過不能接收回車符。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章