我试图从每个文件打印第一行,然后从每个文件打印第二行,依此类推 当getline = EOF时,该文件被关闭并且filesAreOpen递减,尽管程序永远循环
void PrintLines(ifstream files[], size_t count)
{
string s;
ifstream *end, *start;
int filesAreOpen = count;
//continue while filesAreOpen > 0
while(filesAreOpen)
{
}
}
答案 0 :(得分:0)
实际上,如果达到EOF,则不必关闭文件。这将使您的代码更慢,更难以管理。因为您必须检查它是否打开,涉及文件名。在这种情况下,文件已经打开,您将从每个文件读取第一行,而不是每个文件的第二行,依此类推。但是如果文件达到EOF,那么你当然会错过该文件并继续读取其他文件中的行。直到所有文件都达到EOF。然后关闭它们。
void PrintLines(ifstream files[], size_t count)
{
int filesAreOpen = count;
char line[250];
//continue while filesAreOpen > 0
while(filesAreOpen)
{
for(int i=0; i<count; i++)
{
if (!infile[i].eof())
{
infile[i].getline(line,250);
cout << line;
}
else
filesAreOpen--;
}
}
for(int i=0; i<count; i++)
files[i].close();
}