1.cin.get()基本用法
(1)1個引數
用法:a = cin.get() 或者 cin.get(a)
結束條件:輸入字元足夠後回車
說明:這個是單字元的輸入,用途是輸入乙個字元,把它的ascall碼存入到a中
處理方法:與cin不同,cin.get() 在緩衝區遇到[enter],[space],[tab]不會作為捨棄,而是繼續留在緩衝區中
(2)2個引數
用法:cin.get(arrayname,size) 把字元輸入到arrayname中,長度不超過size
注釋:arrayname必須是char型別,即char陣列型別,不可以為string型別;size是指輸入長度,即允許輸入的最大長度。
處理方法:假設把資料輸入到 char a[arraylength],陣列長度為arraylength。cin.get(a,size)—size,arraylength不同可以分為四類:
類1:輸入串長arraylength,會自動擴張arrayname大小,使能儲存所有資料
例1:char a[10];cin,get(a,20);
輸入:123456789012[enter]
輸出a陣列:123456789012 可以發現,輸入12個字元到a[10]中,系統自動擴充a[10],此時實際陣列長為13(『123456789012』\0』』)。但當計算sizeof(a)時,還是現實為10
類2:輸入串長
例2:char a[10];cin.get(a,20);
輸入:12345[enter]
輸出:12345,此時陣列內資料為『12345『\0』』
類3:輸入串長》size,先擷取size個字元,若還是大於arraylength,則輸入前arraylength-1個字元,最後補充『\0』
例3:char a[5];cin,get(a,10);
輸入:123456789012[enter]
輸出:123456789 先擷取了9個字元變成『123456789『/0『』,然後放入到a中,a自動擴張長度
類4:輸入串長》size,先擷取size個字元,若小於arraylength,則把擷取串放入陣列中,最後補充『\0』
例4:char a[15],cin.get(a,10)
輸入:123456789012[enter]
輸出:123456789 此時陣列內為『123456789『\0』』 注意:前size-1有效,最後乙個補『\0』
綜上:當吧大於陣列長度的字串放出char a[arraylength]中,系統自動擴張陣列a的長度使a能放得下,但是這麼做容易產生執行錯誤。
(3)3個引數
用法:cin.get(arrayname,size,s) 把資料輸入到arrayname字元陣列中,當到達長度size時結束或者遇到字元s時結束
注釋:a必須是字元陣列,即char al型別,不可為string型別;size為最大的輸入長度;s為控制,遇到s則當前輸入結束快取區里的s將被捨棄。
2.cin.getline()基本用法
cin.getline() 的用法和 cin.get() 用法大致相同,沒有一引數用法,只有二引數,三引數兩類
cin.gerline( arrayname, size )
cin.getline( arrayname, size, s )
用法與 cin.get() 效果大致相同,但也有些區別
(1)cin.getline(arrayname,size)與cin.get(arrayname,size)的區別
cin.get(arrayname,size)當遇到[enter]時會結束目前輸入,他不會刪除緩衝區中的[enter]
cin.getline(arrayname,size)當遇到[enter]時會結束當前輸入,但是會刪除緩衝區中的[enter]
#include
using
namespace
std;
int main()
輸入:12345[enter]
輸出:12345 【換行】 10
說明:cin.get(a,10)把12345到a中,遇到[enter]結束,但是不把[enter]刪除,則把[enter]輸入到b中,(enter的ascall碼為10)
include using
namespace
std;
int main()
輸入:12345[enter]a[enter]
輸出:12345【換行】97
說明:cin.getline(a,10)吧12345輸入到a中,遇到結束,並把緩衝區中[enter]刪除,把接下來的a輸入到b中
(2)cin.getline(arrayname,size,s)與cin.gei(arrayname,size,s)的區別
cin.getline( arrayname , size , s ) 當遇到s時會結束輸入,並把s從緩衝區中刪除
cin.get(arrayname , size , s)當遇到s時會結束輸入,但不會刪除緩衝區中的s。
include
using namespace std;
int main()
輸入:12345,[enter]
輸出:12345【換行】10
說明:cin.getline吧12345輸入到a中,遇到』,『結束,並刪除緩衝區的』,『,後面的[enter]輸入到b中
總之,cin.get() 不刪,cin.getline() 刪。
運用—以任何符號作為輸入分隔符
例題:輸入五個學生的名字,每個學生的名字不超過10個字元,輸入時學生名字之間用逗號隔開,把這五個名字儲存並換行輸出。
include using
namespace
std;
int main()
執行結果為:
如果不新增以*注釋的**,則執行結果為:
參考自:
各種輸入方法總結(C )
檢視部落格 c 基礎 各種輸入方法總結,cin cin.get cin.getline getline gets getchar 檢視部落格 c 中cin.get cin.getline getchar getch 的區別 檢視部落格 cin.get 與cin.peek 的使用 下面是我整理過後的做...
各種輸入的區別
c 中cin cin.get cin.getline getline gets 等函式的用法 學c 的時候,這幾個輸入函式弄的有點迷糊 這裡做個小結,為了自己複習,也希望對後來者能有所幫助,如果有差錯的地方還請各位多多指教 本文所有程式均通過vc 6.0執行 1 cin 2 cin.get 3 ci...
各種輸入的總結
一 gets 與scanf讀取字串的區別 1.截止字元不同。gets函式固定的以換行符作為結尾,遇到 換行符時結束輸入。scanf函式預設以 空白函式結尾,同時可以對截止函式進行修改,以 空格和換行 截止。2.對截止字元處理不同。gets函式 會讀入截止字元 n,同時將 n自動替換為 0.scanf...