[archive] binary archive to memory stream
Hello,
I am wrapping my head around archive, specifically binary archive.
I'd like to serialize a vector of objects in such a way, I need to
capture intermediate vector buffers (literally, to vector of uint8_t)
so that I can determine their sizes.
After which point the parent object(s) can serialize to file using
more conventional, built-in file streams and such.
It seems that binary_oarchive is helpful, but still requires there be
an ostream or streambuf in the mix. Which, as an adapter layer, while
helpful, it still leaves the question of extending streambuf to work
with ostream to vector
I am wrapping my head around archive, specifically binary archive.
I'd like to serialize a vector of objects in such a way, I need to capture intermediate vector buffers (literally, to vector of uint8_t) so that I can determine their sizes.
After which point the parent object(s) can serialize to file using more conventional, built-in file streams and such.
It seems that binary_oarchive is helpful, but still requires there be an ostream or streambuf in the mix. Which, as an adapter layer, while helpful, it still leaves the question of extending streambuf to work with ostream to vector
open. I've read some docs on vectors and streambuf, but they all seem to be geared towards a known-size vector, istream and such. I am interested in a vector that can be streamed to, will grow in size, etc. Some clues seem to hint at underflow, overflow type issues?
Any helpful pointers how to go about doing this?
Rather than serializing to a vector, can you not serialize to a stringstream opened in binary mode? I believe that will still give you all the information you require? HTH, John.
On Wed, Jun 18, 2014 at 10:56 AM, John Maddock
I am wrapping my head around archive, specifically binary archive.
I'd like to serialize a vector of objects in such a way, I need to capture intermediate vector buffers (literally, to vector of uint8_t) so that I can determine their sizes.
After which point the parent object(s) can serialize to file using more conventional, built-in file streams and such.
It seems that binary_oarchive is helpful, but still requires there be an ostream or streambuf in the mix. Which, as an adapter layer, while helpful, it still leaves the question of extending streambuf to work with ostream to vector
open. I've read some docs on vectors and streambuf, but they all seem to be geared towards a known-size vector, istream and such. I am interested in a vector that can be streamed to, will grow in size, etc. Some clues seem to hint at underflow, overflow type issues?
Any helpful pointers how to go about doing this?
Rather than serializing to a vector, can you not serialize to a stringstream opened in binary mode? I believe that will still give you all the information you require?
So far so good I think. This is binary data, not "string" data. Or at least, not to be confused with C-style-string, null-terminator characters, per se. No chance of that being the case with stringstream, extracting using the str() function, and so on? Thank you...
HTH, John. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
On Wed, Jun 18, 2014 at 5:20 PM, Michael Powell
On Wed, Jun 18, 2014 at 10:56 AM, John Maddock
wrote: I am wrapping my head around archive, specifically binary archive.
I'd like to serialize a vector of objects in such a way, I need to capture intermediate vector buffers (literally, to vector of uint8_t) so that I can determine their sizes.
After which point the parent object(s) can serialize to file using more conventional, built-in file streams and such.
It seems that binary_oarchive is helpful, but still requires there be an ostream or streambuf in the mix. Which, as an adapter layer, while helpful, it still leaves the question of extending streambuf to work with ostream to vector
open. I've read some docs on vectors and streambuf, but they all seem to be geared towards a known-size vector, istream and such. I am interested in a vector that can be streamed to, will grow in size, etc. Some clues seem to hint at underflow, overflow type issues?
Any helpful pointers how to go about doing this?
Rather than serializing to a vector, can you not serialize to a stringstream opened in binary mode? I believe that will still give you all the information you require?
It works. If I really wanted to I could throw the Boost decoration on top of it, but so far not necessary. Thanks.
So far so good I think. This is binary data, not "string" data. Or at least, not to be confused with C-style-string, null-terminator characters, per se. No chance of that being the case with stringstream, extracting using the str() function, and so on?
Thank you...
HTH, John. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
stringstream is basically std::string with a layer to make it compatible with std::streambuf. It is NOT a C string and the 00 character has no special significance. I also believe that it is exactly what you're looking for. On the other hand, your original explanation leaves me mystified as to what you're actually trying to do. So I could be wrong. Robert Ramey -- View this message in context: http://boost.2283326.n4.nabble.com/archive-binary-archive-to-memory-stream-t... Sent from the Boost - Users mailing list archive at Nabble.com.
Hi Michael,
I've used something like this for
writing:
typedef std::vector<char> BufferType;
typedef
boost::iostreams::stream
Hello,
I am wrapping my head around archive, specifically binary archive.
I'd like to serialize a vector of objects in such a way, I need to capture intermediate vector buffers (literally, to vector of uint8_t) so that I can determine their sizes.
After which point the parent object(s) can serialize to file using more conventional, built-in file streams and such.
It seems that binary_oarchive is helpful, but still requires there be an ostream or streambuf in the mix. Which, as an adapter layer, while helpful, it still leaves the question of extending streambuf to work with ostream to vector
open. I've read some docs on vectors and streambuf, but they all seem to be geared towards a known-size vector, istream and such. I am interested in a vector that can be streamed to, will grow in size, etc. Some clues seem to hint at underflow, overflow type issues?
Any helpful pointers how to go about doing this?
Thanks...
Best regards,
Michael Powell _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (4)
-
John Maddock
-
Michael Powell
-
Robert Ramey
-
Sebastian Messerschmidt