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

2 回答 2

1

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

void FirstLineFromFile(vector<ifstream*> files) {
    for (int i=0; i<files.size(); ++i) {
        string s;
        getline(*files[i], s);
        cout << s << endl;
    }
}
于 2012-11-10T19:58:51.267 回答
0

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

for (start = files, end = files + count; start < end; start++)
{
    start->getline(buf, sizeof(buf));
    cout << buf << '\n';   
} 
于 2012-11-10T20:07:46.793 回答