Managing I/O Console using C++

C++ Stream Classes

What is Stream?
  • A stream is an abstraction. It is a sequence of bytes.
  • It represents a device on which input and output operations are performed.
  • It can be represented as a source or destination of characters of indefinite length.
  • It is generally associated to a physical source or destination of characters like a disk file, keyboard or console.
  • C++ provides standard iostream library to operate with streams.
  • The iostream is an object-oriented library which provides Input/Output functionality using streams.

stream class hierarchy

In the above figure, ios is the base class. The iostream class is derived from istream and ostream classes. The ifstream and ofstream are derived from istream and ostream, respectively. These classes handles input and output with the disk files.

The fstream.h header file contains a declaration of ifstream, ofstream and fstream classes. The iostream.h file contains istream, ostream and iostream classes and included in the program while doing disk I/O operations.

The filebuf class contains input and output operations with files. The streambuf class does not organize streams for input and output operations, only derived classes of streambuf performs I/O operations. These derived classes arranges a space for keeping input data and for sending output data.

The istream and ostream invokes the filebuf functions to perform the insertion or extraction on the streams.

I/O StreamMeaningDescription
istreamInput StreamIt reads and interprets input.
ostreamOutput streamIt can write sequences of characters and represents other kinds of data.
ifstreamInput File StreamThe ifstream class is derived from fstreambase and istream by multiple inheritance.

This class accesses the member functions such as get(), getline(), seekg(), tellg() and read().

It provides open() function with the default input mode and allows input operations.
ofstreamOutput File StreamThe ofstream class is derived from fstreambase and ostream classes.

This class accesses the member functions such as put(), seekp(), write() and tellp().

It provides the member function open() with the default output mode.
fstreamFile StreamThe fstream allows input and output operations simultaneous on a filebuf.

It invokes the member function istream::getline() to read characters from the file.

This class provides the open() function with the default input mode.
fstreambaseFile Stream BaseIt acts as a base class for fstream, ifstream and ofstream. The open() and close() functions are defined in fstreambase.

Advantages of Stream Classes
  • Stream classes have good error handling capabilities.
  • These classes work as an abstraction for the user that means the internal operation is encapsulated from the user.
  • These classes are buffered and do not uses the memory disk space.
  • These classes have various functions that make reading or writing a sequence of bytes easy for the programmer.