2017-02-06 40 views
-1

我想讀通過>>流運營商的基於文本文件閱讀,但是這似乎通過文字來讀取文件一句話:檢測線的一端,而從文本文件C++

void printFile(char filename[]) 
{ 
    ifstream input; 
    input.open(filename); 

    char output[50]; 
    if (input.is_open()) { 
     while (!input.eof()) { 
      input >> output; 
      cout << output << endl; 
     } 
    } 
    else cout << "File is not open!"; 

    input.close(); 
    cout << endl; 
} 

的唯一的問題是它不會打印出換行符。

請注意,我仍然在學習C++,目標是在沒有using string的情況下達到此目的(因此沒有getline)。有沒有辦法做到這一點,或者這是不可能的?

+1

是我們的目標只是不函數getline?您可以通過字符來讀入,而不會丟失'\ n' – odin

+0

使用getline()讀取文件,這樣您就不必擔心換行符。並閱讀https://latedev.wordpress.com/2012/12/04/all-about-eof,看看爲什麼不循環eof()。 –

+0

@NeilButterworth我想你錯過了我的部分問題 –

回答

0

感謝@odin我找到了解決辦法,通過字符,而不是通過文字讀取文件:

void printFile(char filename[]) 
{ 
    char ch; 
    fstream fin(filename, fstream::in); 
    while (fin >> noskipws >> ch) { 
     cout << ch; 
    } 
    fin.close(); 
}