1. 程式人生 > >getline()與get()(c++學習筆記)

getline()與get()(c++學習筆記)

istream中的類(如cin)提供了一些面向行的類成員函式:getline()和get()

1.getline()函式

讀取整行,使用回車鍵輸入的換行符來確定輸入結尾。

呼叫方法:cin.getline(引數1,引數2)

該函式有兩個引數,第一個引數是用來儲存輸入行的陣列的名稱,第二個引數是要讀取的字元數,如果這個引數為20,則函式最多讀取19個字元,餘下的空間用於儲存自動在結尾處新增的空字元。

getline()成員函式在讀取指定數目的字元或遇到換行符時停止讀取。

它通過換行符來確定行尾,但不儲存換行符,相反,在儲存字串時,它用空字元來替換換行符。

2.get()函式

呼叫方法:cin.get(引數1,引數2)

與getline()一樣,接受的引數相同,解釋引數的方式也相同,並且都讀取到行尾,但get不再讀取並丟棄換行符,而是將其留在輸入佇列中。

例:cin.get(name,Size);

       cin.get(dessert,Size);

由於第一次呼叫後,換行符將留在輸入佇列中,因此第二次呼叫時看到的第一個字元便是換行符,因此get()認為已達到行尾,而沒有發現任何可讀取的內容。

可用不帶參的cin.get()可讀取下一個字元(即便是換行符),因此可以用它來處理換行符,為讀取下一行做好準備。

也可將兩個類成員拼接起來使用,如cin.get(name,Size).get();

當使用get()來讀取整行,如何知道停止讀取的原因是由於已經讀取了整行,而不是由於陣列已填滿?

檢視下一個字元,如果是換行符,則已讀取整行,否則,說明該行還有其他輸