HPUX IOS.INTRO[3]

IOS.INTRO(3C++) IOS.INTRO(3C++)
C++ Stream Library
NAME
iostream - buffering, formatting and input/output
SYNOPSIS
#include <iostream.h>
class streambuf ;
class ios ;
class istream : virtual public ios ;
class ostream : virtual public ios ;
class iostream : public istream, public ostream ;
class istream_withassign : public istream ;
class ostream_withassign : public ostream ;
class iostream_withassign : public iostream ;
class Iostream_init ;
extern istream_withassign cin ;
extern ostream_withassign cout ;
extern ostream_withassign cerr ;
extern ostream_withassign clog ;
#include <fstream.h>
class filebuf : public streambuf ;
class fstream : public iostream ;
class ifstream : public istream ;
class ofstream : public ostream ;
#include <strstream.h>
class strstreambuf : public streambuf ;
class istrstream : public istream ;
class ostrstream : public ostream ;
#include <stdiostream.h>
class stdiobuf : public streambuf ;
class stdiostream : public ios ;
DESCRIPTION
The C++ iostream package declared in iostream.h and other header files
consists primarily of a collection of classes. Although originally
intended only to support input/output, the package now supports
related activities such as incore formatting. This package is a
mostly source-compatible extension of the earlier stream I/O package,
described in The C++ Programming Language by Bjarne Stroustrup.
In the iostream man pages, character refers to a value that can be
held in either a char or unsigned char. When functions that return an
int are said to return a character, they return a positive value.
Usually such functions can also return EOF (-1) as an error
indication. The piece of memory that can hold a character is referred
to as a byte. Thus, either a char* or an unsigned char* can point to
an array of bytes.
- 1 - Formatted: August 11, 1996
IOS.INTRO(3C++) IOS.INTRO(3C++)
C++ Stream Library
The iostream package consists of several core classes, which provide
the basic functionality for I/O conversion and buffering, and several
specialized classes derived from the core classes. Both groups of
classes are listed below.
Core Classes
The core of the iostream package comprises the following classes:
streambuf
This is the base class for buffers. It supports insertion
(also known as storing or putting) and extraction (also
known as fetching or getting) of characters. Most members
are inlined for efficiency. The public interface of class
streambuf is described in sbuf.pub(3C++) and the protected
interface (for derived classes) is described in
sbuf.prot(3C++).
ios This class contains state variables that are common to the
various stream classes, for example, error states and
formatting states. See ios(3C++).
istream
This class supports formatted and unformatted conversion
from sequences of characters fetched from streambufs. See
istream(3C++).
ostream
This class supports formatted and unformatted conversion to
sequences of characters stored into streambufs. See
ostream(3C++).
iostream
This class combines istream and ostream. It is intended for
situations in which bidirectional operations (inserting into
and extracting from a single sequence of characters) are
desired. See ios(3C++).
istream_withassign
ostream_withassign
iostream_withassign
These classes add assignment operators and a constructor
with no operands to the corresponding class without
assignment. The predefined streams (see below) cin, cout,
cerr, and clog, are objects of these classes. See
istream(3C++), ostream(3C++), and ios(3C++).
Iostream_init
This class is present for technical reasons relating to
initialization. It has no public members. The
Iostream_init constructor initializes the predefined streams
(listed below). Because an object of this class is declared
- 2 - Formatted: August 11, 1996
IOS.INTRO(3C++) IOS.INTRO(3C++)
C++ Stream Library
in the iostream.h header file, the constructor is called
once each time the header is included (although the real
initialization is only done once), and therefore the
predefined streams will be initialized before they are used.
In some cases, global constructors may need to call the
Iostream_init constructor explicitly to ensure the standard
streams are initialized before they are used.
Predefined streams
The following streams are predefined:
cin The standard input (file descriptor 0).
cout The standard output (file descriptor 1).
cerr Standard error (file descriptor 2). Output through this
stream is unit-buffered, which means that characters are
flushed after each inserter operation. (See ostream::osfx()
in ostream(3C++) and ios::unitbuf in ios(3C++).)
clog This stream is also directed to file descriptor 2, but
unlike cerr its output is buffered.
cin, cerr, and clog are tied to cout so that any use of these
will cause cout to be flushed.
In addition to the core classes enumerated above, the iostream package
contains additional classes derived from them and declared in other
headers. Programmers may use these, or may choose to define their own
classes derived from the core iostream classes.
Classes derived from streambuf
Classes derived from streambuf define the details of how characters
are produced or consumed. Derivation of a class from streambuf (the
protected interface) is discussed in sbuf.prot(3C++). The available
buffer classes are:
filebuf
This buffer class supports I/O through file descriptors.
Members support opening, closing, and seeking. Common uses
do not require the program to manipulate file descriptors.
See filebuf(3C++).
stdiobuf
This buffer class supports I/O through stdio FILE structs.
It is intended for use when mixing C and C++ code. New code
should prefer to use filebufs. See stdiobuf(3C++).
strstreambuf
This buffer class stores and fetches characters from arrays
of bytes in memory (i.e., strings). See ssbuf(3C++).
- 3 - Formatted: August 11, 1996
IOS.INTRO(3C++) IOS.INTRO(3C++)
C++ Stream Library
Classes derived from istream, ostream, and iostream
Classes derived from istream, ostream, and iostream specialize the
core classes for use with particular kinds of streambufs. These
classes are:
ifstream
ofstream
fstream
These classes support formatted I/O to and from files. They
use a filebuf to do the I/O. Common operations (such as
opening and closing) can be done directly on streams without
explicit mention of filebufs. See fstream(3C++).
istrstream
ostrstream
These classes support ``in core'' formatting. They use a
strstreambuf. See strstream(3C++).
stdiostream
This class specializes iostream for stdio FILEs. See
stdiostream.h.
CAVEATS
Parts of the streambuf class of the old stream package that should
have been private were public. Most normal usage will compile
properly, but any code that depends on details, including classes that
were derived from streambufs, will have to be rewritten.
Performance of programs that copy from cin to cout may sometimes be
improved by breaking the tie between cin and cout and doing explicit
flushes of cout.
The header file stream.h exists for compatibility with the earlier
stream package. It includes iostream.h, stdio.h, and some other
headers, and it declares some obsolete functions, enumerations, and
variables. Some members of streambuf and ios (not discussed in these
man pages) are present only for backward compatibility with the stream
package.
SEE ALSO
ios(3C++), sbuf.pub(3C++), sbuf.prot(3C++), filebuf(3C++),
stdiobuf(3C++), ssbuf(3C++), istream(3C++), ostream(3C++),
fstream(3C++), strstream(3C++), and manip(3C++)
- 4 - Formatted: August 11, 1996