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 に答える