c++中get函式和getline函式的區別?

Tags: 區別, 函式,

c++是自20世紀80年代以來一直飽受青睞的計算機語言,以後輸入字串再也不用糾結出問題啦

方法/步驟

通過標準輸入裝置向輸入流輸入一行字串有兩種方式:get函式和getline函式,兩者都是類istream的物件cin的成員函式,下面我們來看看兩者的區別。

getline函式

getline()函式讀取整行,他使用通過ENTER鍵輸入的換行符來確定輸入的末尾,但不儲存換行符,相反,在儲存字串時,他用空值字元來替換換行符。要呼叫該函式,可以使用cin.getline(arrayname,strnum),第一個引數表示用來儲存輸入行的陣列名,第二個引數表示輸入的字元數。如果字元數為20,則函式最多讀取19個字元,餘下的用來儲存自動在結尾處新增的空值字元。

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

get函式

get函式有幾種變體,其中一種和getline很像,接收引數相同,解釋引數的方式也相同,並且都讀取到行尾,但get並不讀取並丟棄換行符,而是將其留在輸入佇列中。

假設兩次呼叫get():

cin.get(name1,size1);

cin.get(name2,size2);

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

解決方法是藉助get(),無引數的函式。其功能是讀取下一個字元。

cin.get(name1,size1);

cin.get();

cin.get(name2,size2);

注:cin.get(name,size)函式仍返回一個cin物件,因此上述程式碼可以寫為

cin.get(name1,size1).get();

相關問題答案