2014-01-18 44 views
-3

我想創建延遲字幕的程序,並且當我在下面運行此代碼時不從第一行讀取。 它似乎文件的中間。有誰知道爲什麼我的代碼沒有從第一行讀取文件

#include "stdafx.h" 
#include "iostream" 
#include "cstdlib" 
#include "fstream" 
#include "string" 

using namespace std; 

int main(int argc, char *argv[]){ 
    ifstream input; //input 

    char input_file[32]; //names of input and output 


     cout << "Enter name of input fille: "; ///user gives names of input 
     cin >> input_file; 

input.open(input_file); 
if (!input.good()){ 
    cout << "File " << input_file << " dosen't exist." << endl; 
    return 1; 
} 


string row; 
while (!input.eof()){  
    getline(input, row); 

    cout << row << endl; 
} 

system("pause"); 
return 0; 
} 
+4

必須閱讀:[_爲什麼iostream :: eof裏面的循環條件被認爲是錯誤的?](http://stackoverflow.com/q/5605125/1870232) – P0W

+0

爲什麼'getline(input,row)'? 'input >> row'有什麼問題? –

+1

順便說一句,代碼工作得很好。 – Mat

回答

0

首先,eof()不應該被放置在一個while(),見here瞭解詳情。因此,改變

while (!input.eof()){  
    getline(input, row); 
    cout << row << endl; 
} 

while (getline(input, row)){  
    cout << row << endl; 
} 

,看看它是如何去。從文件中間看起來很奇怪。也許你可以進一步分享文件的內容給我們,以更好地解決問題。

0

在讀取任何內容之前,您仍然可以使用input.seekg(0, input.beg)手動將位置設置爲開頭。

相關問題