2011-06-02 20 views
0

我正在使用C++實現一個程序,並且我有一個從輸入文件創建下一行的問題。我用:如何從文件中獲取下一行

const MAX 300; 
    char oneline[MAX]; 
    ifstream in; 
    in.open("input.txt); 
    in.getline(oneline,MAX); 

功能getline總是讓我在文件的第一行。問題是,我怎樣才能得到文件中的下一行?

+3

再次致電getline? – 2011-06-02 15:01:24

+0

does not work,我試過 – Anon 2011-06-02 15:02:09

+0

然後顯示更多代碼。我無法重現你的問題;每次我打電話給'getline'時,我都會看到下一行。 (公平起見,我只使用'getline'來獲取一個'std :: string'。在你的代碼中,如果你的代碼行長度超過300個字符,你只會在第一個代碼中獲得前300個呼叫,下一個300,等等。) – 2011-06-02 15:19:14

回答

4
std::string line;  
while(in.good()) 
{ 
    getline(in, line); 

    //do something with line 
} 

由於您使用C++,你應該使用的std :: string閱讀你的線條。

+2

不可以。您應該使用'std :: string' *,無論您是否有理由將行限制爲特定數量的字符。 – 2011-06-02 15:04:15

+0

沒有什麼特別的原因,但是while循環會得到輸入文件中的下一行? – Anon 2011-06-02 15:04:16

+0

是的,循環將每行讀入字符串「line」。那麼你必須對它做些什麼。 – juanchopanza 2011-06-02 15:05:35

1
while (getline(in,line,'\n')){ 
    //do something with line 
} 
+1

你不需要'getline'的最後一個參數;它是默認的(如果你使用其他的東西,這個函數會被錯誤地命名爲:-))。 – 2011-06-02 15:16:24