Разница между cerr и засорением

Опубликовано: 4 Сентября, 2022

В C++ ввод и вывод выполняются в виде последовательности байтов или более широко известны как потоки. cerr и clog связаны со стандартным потоком вывода ошибок C stderr, но cerr — это небуферизованный стандартный поток ошибок, тогда как clog — это буферизованный стандартный поток ошибок. В этой статье мы подробно с примерами узнаем, в чем разница между этими двумя потоками.

cerr: это небуферизованный стандартный поток ошибок, который используется для вывода ошибок. Это объект ostreamclass похож на cout . Он небуферизован, т.е. используется, когда необходимо немедленно отобразить сообщение об ошибке. Поскольку буфера нет, он не может сохранить сообщение об ошибке, чтобы отобразить его позже. Так как cerr не буферизован, он не может сохранить сообщение.

Пример:

C++




// c++ program to implement
// the above approach
#include <iostream>
using namespace std;
  
// Driver code
int main()
{
    cerr << "the message displayed is unbuffered";
    return 0;
}

Выход:

clog: это буферизованный стандартный поток ошибок, который используется для вывода ошибок. Это также объект класса ostream , аналогичный cout . Он буферизуется, т.е. сначала в буфер вставляется сообщение об ошибке, а потом оно выводится на экран. Поскольку есть буфер, он может хранить сообщение об ошибке, чтобы отобразить его позже, в отличие от cerr . Просто потому, что засор буферизуется, он не может сразу отобразить сообщение. clog обычно используется для ведения журнала. Для регистрации некритических событий важнее эффективность, поэтому clog предпочтительнее cerr .

Пример:

C++




// C++ program to implement
// the above approach
#include <iostream>
using namespace std;
  
// Driver code
int main()
{
    clog << "the message displayed is buffered";
    return 0;
}

Выход:

Таблица различий:

cerr

засорять

1. Это небуферизованный стандартный поток ошибок Это буферизованный стандартный поток ошибок
2. Используется для отображения ошибки. Он используется для регистрации.
3. Используется для немедленного отображения сообщения. Он не может отображать сообщение немедленно.
4. Он не может сохранить сообщение, чтобы отобразить его позже. Он может сохранить сообщение в буфере, чтобы отобразить его позже.
5. «c» в cerr относится к «символу», а «err» означает «ошибка». Следовательно, cerr означает «символьная ошибка». «c» в слове «clog» означает «персонаж», а «log» — «логирование», следовательно, «clog» означает «логирование символов».
6. Он менее эффективен, чем clog, потому что это небуферизованный вывод. Он более эффективен, чем cerr, потому что это буферизованный вывод.
7. Это предпочтительнее для критических ошибок (ошибок, которые могут вызвать сбои системы). Это не рекомендуется для критических ошибок (ошибок, которые могут вызвать сбои системы).