
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