Connecting Tech Pros Worldwide Forums | Help | Site Map

ifstream / filebug / FILE*

Mathieu Malaterre
Guest
 
Posts: n/a
#1: Jul 22 '05
Hi,

I am tryig to convert part of a c++ IO library. Right now I am removing
all 'FILE*' and replace them with ifstream.

But I have a problem, after seeking through a stream I have to call the
ijg (jpeg library). Since this is a C library it uses FILE*. My question
is then is there a compatibility layer for ifstream <-> FILE* ?
It should work on non-GNU compiler.

Thanks,
Mathieu
Ps: All I found was:
http://gcc.gnu.org/onlinedocs/libstd...__filebuf.html

Siemel Naran
Guest
 
Posts: n/a
#2: Jul 22 '05

re: ifstream / filebug / FILE*


"Mathieu Malaterre" <malat@free.fr> wrote in message news:ciAKc.49088
[color=blue]
> I am tryig to convert part of a c++ IO library. Right now I am removing
> all 'FILE*' and replace them with ifstream.
>
> But I have a problem, after seeking through a stream I have to call the
> ijg (jpeg library). Since this is a C library it uses FILE*. My question
> is then is there a compatibility layer for ifstream <-> FILE* ?
> It should work on non-GNU compiler.[/color]

I don't think there is a portable way to convert an fstream info a FILE. In
practice, I imagine the std::filebuf class contains within it a priviate
member FILE *, but it's not required by the standard nor is the a public
function to get it.


John Harrison
Guest
 
Posts: n/a
#3: Jul 22 '05

re: ifstream / filebug / FILE*


On Sun, 18 Jul 2004 19:35:36 GMT, Mathieu Malaterre <malat@free.fr> wrote:
[color=blue]
> Hi,
>
> I am tryig to convert part of a c++ IO library. Right now I am removing
> all 'FILE*' and replace them with ifstream.
>
> But I have a problem, after seeking through a stream I have to call the
> ijg (jpeg library). Since this is a C library it uses FILE*. My question
> is then is there a compatibility layer for ifstream <-> FILE* ?
> It should work on non-GNU compiler.
>
> Thanks,
> Mathieu
> Ps: All I found was:
> http://gcc.gnu.org/onlinedocs/libstd...__filebuf.html[/color]

There is no standard way to convert ifstream to FILE*.

The only way to get the compatibility you want is to write your own stream
classes. These classes would extend the iostream library but also use a
FILE* internally which you can then make accessible.

Extending the iostream library is not too difficult and is a useful
technique to learn. You could find the technique explained in The
C++ Standard Library by Josuttis for instance.

john

Closed Thread