从多个文件打印行

时间:2012-11-11 01:48:49

标签: ifstream getline

我试图从每个文件打印第一行,然后从每个文件打印第二行,依此类推 当getline = EOF时,该文件被关闭并且filesAreOpen递减,尽管程序永远循环

void PrintLines(ifstream files[], size_t count)
{
    string s;   
    ifstream *end, *start;
    int filesAreOpen = count;

    //continue while filesAreOpen > 0
    while(filesAreOpen)
    {

    }    
}

1 个答案:

答案 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();
}