从文件打印行

时间:2012-11-10 19:54:37

标签: fstream getline

我正在尝试从每个文件打印第一行,但我认为它输出的是地址。

#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';   
    }   
}

2 个答案:

答案 0 :(得分:1)

流不应该按值传递。此代码按值传递流数组。你可以尝试传递一个向量并对它们进行交互。

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

答案 1 :(得分:0)

ifstream->getline不返回字符串作为其返回值。您需要在单独的行中打印出已填充的缓冲区。

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