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 the device
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 operators
operator>> to read and write data.
In addition to
boost::iostreams::stream, Boost.IOStreams provides the stream
boost::iostreams::filtering_stream, which lets you add data filters. For example, you can use
boost::iostreams::gzip_compressor 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 be missing.