Node:Examples, Previous:Errors, Up:Usage



Examples

To read some data (namely integers, floats and strings) from an ordinary binary file on your filesystem, which was also created on your architecture:

     #include <binfile.h>
     
     binifstream     file("test.dat");
     int             i;
     float           f;
     char            string[256];
     
     // Read a 32-bit integer
     i = file.readInt(4);
     
     // Read an IEEE-754 single (32 bits)
     f = file.readFloat(binio::Single);
     
     // Read a string until newline or max. number of chars exceeded
     file.readString(string, 256, '\n');
     

To do I/O on a file that was created on an x86 machine (i.e. Little Endian, IEEE-754 floats), while your own architecture is something different:

     #include <binfile.h>
     
     binfstream     file;
     int            i = 1234567;
     long           pos;
     
     // open the file "x86.dat" for reading and writing, but do not create
     // it if it's not there.
     file.open("x86.dat", binfbase::NoCreate);
     
     // Check if we could cleanly open the file and bail out, if we
     // couldn't.
     if(file.error())
       return ERROR;
     
     // Set Little Endian mode, with IEEE-754 floats.
     file.setFlag(binio::BigEndian, false);   // remove flag
     file.setFlag(binio::FloatIEEE);          // set flag
     
     // as we just want a demonstration, we discard all read data right away.
     
     // Read a 16-bit integer
     file.readInt(2);
     
     // Read an IEEE-754 double (64 bits)
     file.readFloat(binio::Double);
     
     // Remember our current position in the stream
     pos = file.pos();
     
     // Seek to the end of the file
     file.seek(0, binio::End);
     
     // Write our variable i, determining its size using sizeof()
     file.writeInt(i, sizeof(i));
     
     // Seek back to our former position
     file.seek(pos);
     
     // Read a byte from here
     file.readInt(1);
     
     // close the file again
     file.close();
     
     // and we're finished
     return SUCCESS;
     

To wrap around a stream from the iostream library, reading data until the end of the stream:

     #include <fstream>
     #include <binwrap.h>
     
     // Open the iostream stream for reading and writing in binary mode.
     fstream file("test.dat", ios::in | ios::out | ios::bin);
     
     // Wrap a binary input-only stream around it.
     biniwstream bfile(&file);
     
     // Read (and immediately discard) 24-bit integers until the end
     // of the stream.
     while(!bfile.eof())
       bfile.readInt(3);