Boost logo

Boost :

Subject: [boost] Interest in simple unformatted binary stream I/O?
From: Beman Dawes (bdawes_at_[hidden])
Date: 2011-04-24 08:12:39


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;
}

For docs, header, and example code, see
http://mysite.verizon.net/beman/binary_stream/binary_stream.html
http://mysite.verizon.net/beman/binary_stream/binary_stream.hpp
http://mysite.verizon.net/beman/binary_stream/binary_stream_example.cpp

Is there interest in this for Boost?

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?

--Beman


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