Hello Varlen,
Thank you for reporting this problem. This occurs because
streampos is typedefed differently between old and new
gcc. Before it was
typedef long streampos;
Now, it is
typedef fpos<mbstate_t> streampos;
And conversion operator fpos<mbstate_t>::operator long()
was missing in my gcc3 definition.
I'll fix this problem in next release. Meanwhile, you can
workaround the problem by defining locate0-2 as streampos;
streampos locate0;
streampos locate1;
...
Masa Goto
----- Original Message -----
From: "Varlen Grabski" <grabski@fisica.unam.mx>
To: <roottalk@pcroot.cern.ch>
Sent: Tuesday, September 09, 2003 4:09 AM
Subject: [ROOT] ifstream question
> Hi Rooters,
>
> My macro which worked fine with root 3.03/08, now has some problem with
> new version of the root 3.05/07.Seems that seekg() doesn't change
> position in the file. For the simple program is listed below i have got
> strange result.
>
> indat.open(filename[kz], ios_base::in);
> if(!indat.good())
> {
> cerr << "File open problem" << endl;
> }
> long locate0 = 0;
> locate0 = indat.tellg();
> cout << "locate0 : " << locate0 << endl;
> indat.read(curr, 20);
> long locate1 = 0;
> locate1 = indat.tellg();
> cout << "locate1 : " << locate1 << endl;
> long locate2 = 0;
> indat.seekg(0,ios_base::end);
> locate2 = indat.tellg();
> cout << "locate2 : " << locate2 << endl;
>
> The results are:
>
> locate0 : 146521344
> locate1 : 146525216
> locate2 : 146525248
>
> What am I doing wrong ?
>
> Thanks in advance,
>
> Varlen
>
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:15 MET