This chapter introduces the library Boost.IOStreams. Boost.IOStreams breaks up the well-known streams from the standard library into smaller components. The library defines two concepts: device, which describes data sources and sinks, and stream, which describes an interface for formatted input/output based on the interface from the standard library. A stream defined by Boost.IOStreams isn’t automatically connected to a data source or sink.
Boost.IOStreams provides numerous implementations of the two concepts. For example, there is
boost::iostreams::mapped_file, which loads a file
partially or completely into memory. The stream
boost::iostreams::stream can be connected to a device like
boost::iostreams::mapped_file to use the familiar stream
operator>> to read and write data.
In addition to
boost::iostreams::stream, Boost.IOStreams provides the
boost::iostreams::filtering_stream, which lets you add data
filters. For example, you can use
to write data compressed in the GZIP format.
Boost.IOStreams can also be used to connect to platform-specific objects. The library provides devices to connect to a Windows handle or a file descriptor. That way objects from low-level APIs can be made available in platform-independent C++ code.
The classes and functions provided by Boost.IOStreams are defined in the namespace
boost::iostreams. There is no master header file. Because
Boost.IOStreams contains more than header files, it must be prebuilt. This can be important
because, depending on how Boost.IOStreams has been prebuilt, support for some features could