0

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

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

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

    }    
}
4

1 回答 1

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();
}
于 2012-11-11T21:43:04.467 回答