2012-11-10 108 views
0

我想從每個文件打印第一行,但我認爲它輸出的地址,而不是。從文件打印行

#include <fstream> 
#include <iostream> 
#include <cstdlib> 

using namespace std; 

void FirstLineFromFile(ifstream files[], size_t count) 
{ 
    const int BUFSIZE = 511;   
    char buf[BUFSIZE]; 

    ifstream *end, *start; 

    for (start = files, end = files + count; start < end; start++) 
    { 
     cout << start->getline(buf, sizeof(buf)) << '\n'; 
    } 
} 

回答

1

流不應該按值傳遞。此代碼按值傳遞一組數據流。你可以嘗試傳遞一個矢量,並對它們進行交流。

void FirstLineFromFile(vector<ifstream*> files) { 
    for (int i=0; i<files.size(); ++i) { 
     string s; 
     getline(*files[i], s); 
     cout << s << endl; 
    } 
} 
+0

爲(開始=文件,結束=文件+計數;啓動<端;開始++){ \t函數getline(*開始,S); \t cout << s <<'\ n'; } – blitzeus

0

ifstream->getline不會返回一個字符串作爲它的返回值。你需要打印出一個單獨的行填充的緩衝區。

for (start = files, end = files + count; start < end; start++) 
{ 
    start->getline(buf, sizeof(buf)); 
    cout << buf << '\n'; 
}