2012-11-10 81 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'; 
}