Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating fstream object from a FILE* pointer

The well known way of creating an fstream object is:

ifstream fobj("myfile.txt");

ie. using a filename.

But I want to create an ifstream object using a file descriptor.

Reason: I want to execute a command using _popen(). _popen() returns the output as a FILE*. So there is a FILE* pointer involved but no filename.

like image 204
Tabrez Ahmed Avatar asked May 19 '12 17:05

Tabrez Ahmed


1 Answers

You cannot do that just in standard C++, since iostreams and C I/O are entirely separate and unrelated. You could however write your own iostream that's backed by a C FILE stream. I believe that GCC comes with one such stream class as a library extension.

Alternatively, if all you want is an object-y way of wrapping a C FILE stream, you could use a unique pointer for that purpose.

like image 176
Kerrek SB Avatar answered Sep 23 '22 00:09

Kerrek SB