前言
作為C++獲取輸入流的方法,幾乎在任何一本資料書上,getline()方法和get()方法都作為入門級(jí)的方法進(jìn)行講述,即便如此,筆者在學(xué)習(xí)C++的過(guò)程中仍經(jīng)常忘記這二者的使用要點(diǎn),可能也有C++的初學(xué)者對(duì)這兩個(gè)方法還心存疑慮,本篇文章就這兩個(gè)方法的使用進(jìn)行簡(jiǎn)要闡述。標(biāo)題的初探二字已經(jīng)表示本文只是以學(xué)習(xí)筆記的形式進(jìn)行記錄,不是在深層次上對(duì)二者進(jìn)行分析。
最原始的方法:
獲取輸入流最原始的形式就是cin>>(type),但是這種形式在碰到輸入中有空格、制表符或者換行符的時(shí)候就會(huì)中斷,值得注意的是中斷后空格、制表符或者換行符還繼續(xù)留在輸入流中。所以最簡(jiǎn)單的,我們無(wú)法使用cin>>(type)的形式來(lái)讀取包含空格的字符串,比如輸入流中有一句:How are you?使用cin>>(type)是無(wú)法一次性讀取出來(lái)的,鑒于此,getline()方法和get()方法便誕生了。
getline()方法:
getline()方法讀取整行,他使用通過(guò)回車鍵輸入的換行符來(lái)中斷,getline()方法有兩個(gè)參數(shù),第一個(gè)參數(shù)用來(lái)存儲(chǔ)輸入行的數(shù)組的名稱,第二個(gè)參數(shù)用來(lái)表示讀取字符數(shù)的大小。getline(name,size)的方法的使用過(guò)程如下:
1. 從輸入流中讀取一個(gè)字符。
2. 如果讀取數(shù)量達(dá)到size-1,將該字符存儲(chǔ)到name數(shù)組,刪除輸入流中的該字符,跳轉(zhuǎn)到5。
3. 如果該字符是換行符,刪除輸入流中的該字符,跳轉(zhuǎn)到5。
4. 否則,將該字符存儲(chǔ)到name數(shù)組,刪除輸入流中的該字符,跳轉(zhuǎn)到1。
5. 在name中結(jié)尾添加空字符,結(jié)束。
下面的代碼是使用原始方法和getline()方法的比較:
#include <iostream> using namespace std; int main() { const