Re: [ROOT] Problem with looping over entries in a file

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed Aug 21 2002 - 15:34:04 MEST


Hi jan,

Replace your while loop by:

while (1) {
  fin >> rootfile;
  if(!fin.good()) break;
  cout << "Processing file: " << "*" << rootfile << "*" <<'\n';
}

Rene Brun

On Wed, 21 Aug 2002, Jan Conrad wrote:

> 
> Hi,
> 
> 
> 
>  following MACRO:
> 
> {
> #include <fstream.h>
> #include <iostream.h>
> 
> char rootfile[1024], tmpfil[1024];
> TString FileList ="idiot.dat";
> ifstream fin(FileList);
> 
> if (!fin){
>   cout << "cannot open file list \n";
>   return 1;
>     }
> 
> // List of monitoring files.
> 
> 
> 
> while (!fin->eof()) {
> 
>     fin >> rootfile;
>     cout << "Processing file: " << "*" << rootfile << "*" <<
> '\n';
> 
> }
> cerr << "Done" << '\n';
> 
> }
> 
> 
> gives as output:
> 
> Processing file: *1*
> Processing file: *2*
> Processing file: *3*
> Processing file: **
> Done
> 
> The file idiot.dat has the entries:
> 1
> 2
> 3
> 
> and more idiot.dat|wc -l gives as answer: 3 (i.e it has really 3
> lines, the buffer ends after the 3)
> 
> So why the additional ** output ?
> 
> Thanks in advance,
> 
> Jan Conrad
> 
> 
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> Jan CONRAD , ISV, HEPD, Uppsala University
> Angstrom Laboratory, room 12145
> phone/fax:+46- 18-471 7639/3513
> 
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:05 MET