## wxDataInputStream

This class provides functions that read binary data types in a portable way. Data can be read in either big-endian or little-endian format, little-endian being the default on all architectures.

If you want to read data from text files (or streams) use wxTextInputStream instead.

The >> operator is overloaded and you can use this class like a standard C++ iostream. Note, however, that the arguments are the fixed size types wxUint32, wxInt32 etc and on a typical 32-bit computer, none of these match to the "long" type (wxInt32 is defined as signed int on 32-bit architectures) so that you cannot use long. To avoid problems (here and elsewhere), make use of the wxInt32, wxUint32, etc types.

For example:

      wxFileInputStream input( "mytext.dat" );
      wxDataInputStream store( input );
      wxUint8 i1;
      float f2;
      wxString line;

      store >> i1;       // read a 8 bit integer.
      store >> i1 >> f2; // read a 8 bit integer followed by float.
      store >> line;     // read a text line

See also wxDataOutputStream.

Derived from

None

Include files

<wx/datstrm.h>

Members

wxDataInputStream::wxDataInputStream
wxDataInputStream::~wxDataInputStream
wxDataInputStream::BigEndianOrdered
wxDataInputStream::Read8
wxDataInputStream::Read16
wxDataInputStream::Read32
wxDataInputStream::Read64
wxDataInputStream::ReadDouble
wxDataInputStream::ReadString

### wxDataInputStream::wxDataInputStream

wxDataInputStream(wxInputStream& stream)

wxDataInputStream(wxInputStream& stream, wxMBConv& conv = wxMBConvUTF8)

Constructs a datastream object from an input stream. Only read methods will be available. The second form is only available in Unicode build of wxWindows.

Parameters

stream

The input stream.

conv

Charset conversion object object used to decode strings in Unicode mode (see wxDataInputStream::ReadString documentation for detailed description). Note that you must not destroy conv before you destroy this wxDataInputStream instance!

### wxDataInputStream::~wxDataInputStream

~wxDataInputStream()

Destroys the wxDataInputStream object.

### wxDataInputStream::BigEndianOrdered

void BigEndianOrdered(bool be_order)

If be_order is TRUE, all data will be read in big-endian order, such as written by programs on a big endian architecture (e.g. Sparc) or written by Java-Streams (which always use big-endian order).

### wxDataInputStream::Read8

wxUint8 Read8()

Reads a single byte from the stream.

### wxDataInputStream::Read16

wxUint16 Read16()

Reads a 16 bit unsigned integer from the stream.

### wxDataInputStream::Read32

wxUint32 Read32()

Reads a 32 bit unsigned integer from the stream.

### wxDataInputStream::Read64

wxUint64 Read64()

Reads a 64 bit unsigned integer from the stream.

### wxDataInputStream::ReadDouble

double ReadDouble()

Reads a double (IEEE encoded) from the stream.

### wxDataInputStream::ReadString

wxString ReadString()

Reads a string from a stream. Actually, this function first reads a long integer specifying the length of the string (without the last null character) and then reads the string.

In Unicode build of wxWindows, the fuction first reads multibyte (char*) string from the stream and then converts it to Unicode using the conv object passed to constructor and returns the result as wxString. You are responsible for using the same convertor as when writing the stream.

See also wxDataOutputStream::WriteString.