Системы ввода/вывода С и С++ имеют одну общую особенность: они обе оперируют потоками. То, что потоки в С и С++ подобны между собой, означает, что все, что известно о потоках в языке С, полностью применимо и в С++.
Предопределенные потоки С++
Как и в языке С, в С++ существует несколько предопределенных потоков, открывающихся автоматически вместе с началом выполнения программы. Ими служат cin, cout, cerr и clog. Как известно, cin является потоком, ассоциированным со стандартным вводом, а cout представляет собой поток, ассоциированный со стандартным выводом. Потоки cerr и clog используются для вывода сообщений об ошибках. Разница между cerr и clog заключается в том, что, хотя они оба привязаны к стандартному выводу, cerr не буферизирован, поэтому все посланные в него данные выводятся немедленно. В противоположность этому clog буферизирован, так что данные выводятся только тогда, когда буфер оказывается полным.
По умолчанию стандартные потоки С++ привязаны к консоли, но программа может перенаправить их на другие устройства или файлы. Они также могут быть перенаправлены операционной системой.