| Version: 3.3.1

Public Member Functions | List of all members
wxDataInputStream Class Reference
Class List by Category » Streams

`#include <wx/datstrm.h>`

## Detailed Description

This class provides functions that read binary data types in a portable way.

Please see wxDataOutputStream for the discussion of the format expected by this stream on input, notably for the floating point values.

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
wxDataInputStream
This class provides functions that read binary data types in a portable way.
Definition: datstrm.h:241
wxFileInputStream
This class represents data read in from a file.
Definition: wfstream.h:229
wxString
String class for passing textual data to or receiving it from wxWidgets.
Definition: string.h:372
wxUint8
unsigned char wxUint8
8 bit type (the mapping is more complex than a simple typedef and is not shown here).
Definition: defs.h:1401

##

Library: wxBase
Category: Streams

See also
  wxDataOutputStream

## Public Member Functions
| wxDataInputStream (wxInputStream &stream, const wxMBConv &conv=wxConvUTF8)
| Constructs a datastream object from an input stream. More...
| ~wxDataInputStream ()
| Destroys the wxDataInputStream object. More...
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. More...
wxMBConv * | GetConv () const
| Returns the current text conversion class used for reading strings. More...
wxUint8 | Read8 ()
| Reads a single byte from the stream. More...
void | Read8 (wxUint8 *buffer, size_t size)
| Reads bytes from the stream in a specified buffer. More...
wxUint16 | Read16 ()
| Reads a 16 bit unsigned integer from the stream. More...
void | Read16 (wxUint16 *buffer, size_t size)
| Reads 16 bit unsigned integers from the stream in a specified buffer. More...
wxUint32 | Read32 ()
| Reads a 32 bit unsigned integer from the stream. More...
void | Read32 (wxUint32 *buffer, size_t size)
| Reads 32 bit unsigned integers from the stream in a specified buffer. More...
wxUint64 | Read64 ()
| Reads a 64 bit unsigned integer from the stream. More...
void | Read64 (wxUint64 *buffer, size_t size)
| Reads 64 bit unsigned integers from the stream in a specified buffer. More...
float | ReadFloat ()
| Reads a float from the stream. More...
void | ReadFloat (float *buffer, size_t size)
| Reads float data from the stream in a specified buffer. More...
double | ReadDouble ()
| Reads a double from the stream. More...
void | ReadDouble (double *buffer, size_t size)
| Reads double data from the stream in a specified buffer. More...
wxString | ReadString ()
| Reads a string from a stream. More...
void | SetConv (const wxMBConv &conv)
| Sets the text conversion class used for reading strings. More...
void | UseBasicPrecisions ()
| Disables the use of extended precision format for floating point numbers. More...
void | UseExtendedPrecision ()
| Explicitly request the use of extended precision for floating point numbers. More...

## Constructor & Destructor Documentation

## ◆ wxDataInputStream()

wxDataInputStream::wxDataInputStream | ( | wxInputStream & | stream,
|  | const wxMBConv & | conv = `wxConvUTF8`
| ) |  |

Constructs a datastream object from an input stream.

Only read methods will be available.

Parameters

  stream | The input stream.
  conv | Charset conversion object used to decode strings (see ReadString() for a detailed description). Note that you must not destroy conv before you destroy this wxDataInputStream instance!

## ◆ ~wxDataInputStream()

wxDataInputStream::~wxDataInputStream | ( |  | ) |

Destroys the wxDataInputStream object.

## Member Function Documentation

## ◆ BigEndianOrdered()

void wxDataInputStream::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).

## ◆ GetConv()

wxMBConv* wxDataInputStream::GetConv | ( |  | ) | const

Returns the current text conversion class used for reading strings.

## ◆ Read16() [1/2]

wxUint16 wxDataInputStream::Read16 | ( |  | ) |

Reads a 16 bit unsigned integer from the stream.

## ◆ Read16() [2/2]

void wxDataInputStream::Read16 | ( | wxUint16 * | buffer,
|  | size_t | size
| ) |  |

Reads 16 bit unsigned integers from the stream in a specified buffer.

The number of 16 bit unsigned integers to read is specified by the size variable.

## ◆ Read32() [1/2]

wxUint32 wxDataInputStream::Read32 | ( |  | ) |

Reads a 32 bit unsigned integer from the stream.

## ◆ Read32() [2/2]

void wxDataInputStream::Read32 | ( | wxUint32 * | buffer,
|  | size_t | size
| ) |  |

Reads 32 bit unsigned integers from the stream in a specified buffer.

The number of 32 bit unsigned integers to read is specified by the size variable.

## ◆ Read64() [1/2]

wxUint64 wxDataInputStream::Read64 | ( |  | ) |

Reads a 64 bit unsigned integer from the stream.

## ◆ Read64() [2/2]

void wxDataInputStream::Read64 | ( | wxUint64 * | buffer,
|  | size_t | size
| ) |  |

Reads 64 bit unsigned integers from the stream in a specified buffer.

The number of 64 bit unsigned integers to read is specified by the size variable.

## ◆ Read8() [1/2]

wxUint8 wxDataInputStream::Read8 | ( |  | ) |

Reads a single byte from the stream.

## ◆ Read8() [2/2]

void wxDataInputStream::Read8 | ( | wxUint8 * | buffer,
|  | size_t | size
| ) |  |

Reads bytes from the stream in a specified buffer.

The number of bytes to read is specified by the size variable.

## ◆ ReadDouble() [1/2]

double wxDataInputStream::ReadDouble | ( |  | ) |

Reads a double from the stream.

The expected format is either 80 bit extended precision or, if UseBasicPrecisions() had been called, standard IEEE 754 64 bit double precision.

## ◆ ReadDouble() [2/2]

void wxDataInputStream::ReadDouble | ( | double * | buffer,
|  | size_t | size
| ) |  |

Reads double data from the stream in a specified buffer.

The number of doubles to read is specified by the size variable.

## ◆ ReadFloat() [1/2]

float wxDataInputStream::ReadFloat | ( |  | ) |

Reads a float from the stream.

Notice that if UseBasicPrecisions() hadn't been called, this function simply reads a double and truncates it to float as by default the same (80 bit extended precision) representation is used for both float and double values.

Since
  2.9.5

## ◆ ReadFloat() [2/2]

void wxDataInputStream::ReadFloat | ( | float * | buffer,
|  | size_t | size
| ) |  |

Reads float data from the stream in a specified buffer.

The number of floats to read is specified by the size variable.

Since
  2.9.5

## ◆ ReadString()

wxString wxDataInputStream::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.

The function reads all bytes until the next `NUL` one from the stream and uses the conv object passed to constructor to convert them to text, which is then returned as wxString. You are responsible for using the same converter as when writing the stream, as the information about the encoding is not stored in the stream itself.

See also
  wxDataOutputStream::WriteString()

## ◆ SetConv()

void wxDataInputStream::SetConv | ( | const wxMBConv & | conv | ) |

Sets the text conversion class used for reading strings.

## ◆ UseBasicPrecisions()

void wxDataInputStream::UseBasicPrecisions | ( |  | ) |

Disables the use of extended precision format for floating point numbers.

This method disables the use of 80 bit extended precision format for the `float` and `double` values read from the stream, which is used by default (unless `wxUSE_APPLE_IEEE` was set to `0` when building the library, in which case the extended format support is not available at all and this function does nothing).

After calling it, `float` values will be expected to appear in one of IEEE 754 "basic formats", i.e. 32 bit single precision format for floats and 64 bit double precision format for doubles in the input.

Since
  2.9.5

## ◆ UseExtendedPrecision()

void wxDataInputStream::UseExtendedPrecision | ( |  | ) |

Explicitly request the use of extended precision for floating point numbers.

This function allows the application code to explicitly request the use of 80 bit extended precision format for the floating point numbers. This is the case by default but using this function explicitly ensures that the compilation of code relying on reading the input containing numbers in extended precision format would fail when using a version of wxWidgets compiled with `wxUSE_APPLE_IEEE==0` and so not supporting this format at all.

Since
  2.9.5