2015-12-28 23 views
0

我有一個關於輸入流函數獲取在C + +的問題。 那些是相同的:輸入流函數獲取在C + +

第一個是:

ifstream infile ; 

char ch ; 
infile.get(ch); 

第二個是:

int c ; 


ifstream infile ; 

c= infile.get(); 

請澄清這些兩個用途之間的差。 謝謝。

+1

[此'std :: istream :: get'參考](http://en.cppreference.com/w/cpp/io/basic_istream/get)可能對您有所幫助。 –

+2

你看過[參考文檔](http://en.cppreference.com/w/cpp/io/basic_istream/get)嗎?你不理解文檔/例子中的什麼?你是返回類型是'int'和'char'暗示你已經隱約意識到不同之處.... –

回答

4

來源:http://en.cppreference.com/w/cpp/io/basic_istream/get

1)讀取一個字符,如果可用返回。 否則,返回Traits::eof()並設置failbiteofbit

2)讀取一個字符並將其存儲到ch(如果可用)。 否則,葉子ch未修改,並設置failbiteofbit

就你而言,上面的(1)對應於你的代碼的第二塊,(2)對應於你的代碼的第一塊。

兩者之間的區別以突出顯示的文字顯示,ch會發生什麼情況。在第一種情況下,Traits::eof()被分配到ch。在第二種情況下,ch保持不變。