Hi,
I have a code block trying to output a series of gzip files. I wish to have all the files flushed after the block.
But the files can only be flushed after exiting the whole program.
The files still have zero size after I try to close them. I am using std::vector to store all the pointers to boost filtering_ostream.
Can you help?
//Open iostreams
char filename[20];
std::vector<boost::iostreams::filtering_ostream *> os_vector;
for(i=0; i<4; i++)
{
sprintf(filename, "file_%d.gz", i );
std::ofstream *of = new std::ofstream(filename, std::ios_base::binary);
boost::iostreams::filtering_ostream* os = new boost::iostreams::filtering_ostream;
os->push(boost::iostreams::gzip_compressor());
os->push(*of);
os_vector->push_back(os);
}
//Output something
for(i=0; i<4; i++)
{
boost::iostreams::filtering_ostream* os = os_vector[i];
os<<"Output something here" << std::endl;
}
//Close streams
for(i=0; i<4; i++)
{
boost::iostreams::filtering_ostream* os = os_vector[i];
os->strict_sync();
os->pop();
os->reset();
}
Thanks,
Mengda