2013-04-07 18 views
0
huffmanFile.open("code.txt"); 

while(huffmanFile.peek() != EOF) 
{ 
    cin >> letters[c] >> numbers[c]; 
    c++; 
} 

huffmanFile.close(); 

輸入文件: A 23 乙35 Ç47 d 0 E 12 ˚F11 ģ92 H 18 我17C++卡在環

我嘗試輸出C從我的主要功能執行後,它不會離開while循環。我試過調試沒有用。我把它和我編寫的許多其他程序進行了比較,並且仍然沒有運氣。

+0

您可以將'cin'部分移動到循環條件並擺脫當前存在的內容(並確保它是正確的流)。 – chris 2013-04-07 21:07:31

+3

正在使用兩種不同的流:'huffmanFile'和'cin'。 'huffmanFile'永遠不會被讀取,所以'EOF'永遠不會被讀取。 – hmjd 2013-04-07 21:07:39

回答

2

假設huffmanFile是一種istream對象類型,您可以嘗試使用此變體:

while (huffmanFile >> letters[c] >> numbers[c]) { 
    ++c; 
} 

說明: 的istream::operator >>將其稱爲eofbit內部標誌,如果流的末尾已到達。它還返回*this,允許我們執行如cin >> a >> b >> c的讀數序列。 之後,一個istream對象正在被while子句測試,即內部bool operator()被調用,這又返回true如果eofbit標誌已被設置,否則false

+0

最後是正確的答案。 – john 2013-04-07 21:11:08

1

cin是標準輸入流,它通常需要從鍵盤輸入。您需要從文件中讀取輸入。

循環從不終止,因爲文件讀取位置永遠不會被提前。