Std cerr
Автор Skellington задал вопрос в разделе Другие языки и технологии
C++ str, подскажите и получил лучший ответ
Ответ от [гуру]
Иногда консольное приложение запускает не пользователь, а другая программа-оболочка (обычно с GUI).
И тогда эта программа может перехватывать вывод cout и cerr и отображать его в своем окне, либо писать в файл.
Причем вывод cerr идет отдельно, чтобы оболочка знала, что это не простое сообщение, а ошибка, и сообщала об этом юзеру.
Пример такой оболочки - журнал компиляции любой IDE для того же C++.
Консольный компилятор через cout или clog передает обычные сообщения о компиляции, а через cerr - ошибки компиляции. Увидев ошибки при компиляции, IDE сообщает о них программисту. Visual Studio отображает ошибки в специальном окошке, отдельно от прочих сообщений
Иногда эти потоки нужно перенаправить в другое место, нежели в стандартный поток вывода.
В файл, например.
cout - связан со стандартным потоком вывода
cerr - связан со стандартным потоком ошибок (небуферизированный вывод)
clog - связан со стандартным потоком ошибок (буферизированный вывод)
Небуферизированный - выводится сразу в консоль.
Буферизированный - выводится по мере накопления определённого количества байт и как правило в файл, такая реализация положительно сказывается на производительности.
Буферизированный поток можно вывести и раньше, если сбросить буфер (flush)
P.S. не str:: а std::