Boost logo

Boost :

Subject: Re: [boost] Interest in simple unformatted binary stream I/O?
From: Vicente BOTET (vicente.botet_at_[hidden])
Date: 2011-04-24 15:18:25


Hi,

> Message du 24/04/11 14:14
> De : "Beman Dawes"
> A : "Boost Developers List"
> Copie à :
> Objet : [boost] Interest in simple unformatted binary stream I/O?
>
> There have been many requests on Boost and various C++ newsgroups for
> unformatted binary I/O. For example, in 2003 Neal Becker wrote:
>
> I wonder if anyone has code for implementing unformatted I/O?
> What I have in mind is
> for the simple case where the application that reads data knows
> the data types, so
> this is not as complicated as the general marshalling situation.
>
> This proposal provides a very simple solution that works with standard
> library input and output streams. The one caveat is that the stream
> must be opened with filemode std::ios_base::binary to avoid certain
> data values being treated as line endings.
>
> int main()
> {
> fstream f("binary_stream_example.dat",
> std::ios_base::trunc | std::ios_base::in | std::ios_base::out |
> std::ios_base::binary);
>
> int32_t x = 0x01020304;
> int32_t y = 0;
>
> f << bin(x); // write 4 bytes
> f.seekg(0);
> f >> bin(y); // read 4 bytes
>
> BOOST_ASSERT(x == y);
>
> return 0;
> }

I guess that we can not mix binary and non binary formats. How a binary stream woks for non binary codes?

I don·t know if a manipulator that changes the mode globaly can be defined so the following will work

f << bin << x1 << x2; // write 4+4 bytes
f.seekg(0);
f >> bin >> y1 >> y2; // read 4+4 bytes

> Is there interest in this for Boost?

Yes sure.

> It seems way too small and simple to be a whole library itself. Are
> there any ideas where it should live and what namespace it should be
> in?

Waiting for best, it seems the utility library is a good candidate.

Best,
Vicente


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk