|standard input stream|
|standard output stream|
|standard error (output) stream|
|standard logging (output) stream|
cin(the standard output and input streams);
clogare also output streams, so they essentially work like
cout, with the only difference being that they identify streams for specific purposes: error messages and logging; which, in many cases, in most environment setups, they actually do the exact same thing: they print on screen, although they can also be individually redirected.
coutis used together with the insertion operator, which is written as
<<(i.e., two "less than" signs).
<<operator inserts the data that follows it into the stream preceding it. In the examples above, it inserted the literal string
Output sentence, the number
120, and the value of variable
xinto the standard output stream
cout. Notice that the sentence in the first statement is enclosed in double quotes (
") because it is a string literal, while in the last one,
xis not. The double quoting is what makes the difference; when the text is enclosed between them, the text is printed literally; when they are not, the text is interpreted as the identifier of a variable, and its value is printed instead. For example, these two sentences have very different results:
This is a single C++ statement. Chaining insertions is especially useful to mix literals and variables in a single statement:
I am 24 years old and my zipcode is 90064
This is a sentence.This is another sentence.
\n(i.e., a backslash character followed by a lowercase
n). For example:
endlmanipulator can also be used to break lines. For example:
endlmanipulator produces a newline character, exactly as the insertion of '\n' does; but it also has an additional behavior: the stream's buffer (if any) is flushed, which means that the output is requested to be physically written to the device, if it wasn't already. This affects mainly fully buffered streams, and
coutis (generally) not a fully buffered stream. Still, it is generally a good idea to use
endlonly when flushing the stream would be a feature and
'\n'when it would not. Bear in mind that a flushing operation incurs a certain overhead, and on some devices it may produce a delay.
Statements and flow control