The IO types and objects that we’ve used so far manipulate char
data. By default these objects are connected to the user’s console window. Of course, real programs cannot be limited to doing IO solely to or from a console window. Programs often need to read or write named files. Moreover, it can be convenient to use IO operations to process the characters in a string
. Applications also may have to read and write languages that require wide-character support.
To support these different kinds of IO processing, the library defines a collection of IO types in addition to the istream
and ostream
types that we have already used. These types, which are listed in Table 8.1, are defined in three separate headers: iostream
defines the basic types used to read from and write to a stream, fstream
defines the types used to read and write named files, and sstream
defines the types used to read and write in-memory string
s.
To support languages that use wide characters, the library defines a set of types and objects that manipulate wchar_t
data (§ 2.1.1, p. 32). The names of the wide-character versions begin with a w
. For example, wcin, wcout
, and wcerr
are the wide-character objects that correspond to cin, cout
, and cerr
, respectively. The wide-character types and objects are defined in the same header as the plain char
types. For example, the fstream
header defines both the ifstream
and wifstream
types.