The well known way of creating an fstream
object is:
ifstream fobj(\"myfile.txt\");
ie. using a filename.
You can create a string, and use fread to read and append to it. It's not clean, but you're working with a C interface.
Something like this should work:
FILE * f = popen(...)
const unsigned N=1024;
string total;
while (true) {
vector<char> buf[N];
size_t read = fread((void *)&buf[0], 1, N, f);
if (read) { total.append(buf.begin(), buf.end()); }
if (read < N) { break; }
}
pclose(f);
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.