1.2. A First Look at Input/Output
C++ does not directly define any statements to do input or output (IO). Instead, IO is provided
by the standard library . The IO library provides an extensive set of facilities. However, for
many purposes, including the examples in this book, one needs to know only a few basic
concepts and operations.
Most of the examples in this book use the iostream library , which handles formatted input and
output. Fundamental to the iostream library are two types named istream and ostream , which
represent input and output streams, respectively. A stream is a sequence of characters intended
to be read from or written to an IO device of some kind. The term "stream" is intended to
suggest that the characters are generated, or consumed, sequentially over time.
1.2.1. Standard Input and Output Objects
The library defines four IO objects. To handle input, we use an object of type istream named cin
(pronounced "see-in"). This object is also referred to as the standard input . For output, we
use an ostream object named cout (pronounced "see-out"). It is often referred to as the
standard output . The library also defines two other ostream objects, named cerr and clog
(pronounced "see-err" and "see-log," respectively). The cerr object, referred to as the
standard error , is typically used to generate warning and error messages to users of our
programs. The clog object is used for general information about the execution of the program.
Ordinarily, the system associates each of these objects with the window in which the program is
executed. So, when we read from cin , data is read from the window in which the program is
executing, and when we write to cout, cerr , or clog , the output is written to the same
window. Most operating systems give us a way of redirecting the input or output streams when
we run a program. Using redirection we can associate these streams with files of our choosing.
1.2.2. A Program that Uses the IO Library
So far, we have seen how to compile and execute a simple program, although that program did
no work. In our overall problem, we'll have several records that refer to the same ISBN. We'll
need to consolidate those records into a single total, implying that we'll need to know how to
add the quantities of books sold.
To see how to solve part of that problem, let's start by looking at how we might add two
numbers. Using the IO library, we can extend our main program to ask the user to give us two
numbers and then print their sum: