C ++ clog - стандартная библиотека C ++

Объект clog в C ++ - это объект класса ostream. Он связан со стандартным потоком вывода ошибок C stderr.

clogи cerrоба связаны с stderr, но отличается от них cerrв том смысле, что потоки в clogбуферизируются и не связываются автоматически с cout.

Буферизованный вывод более эффективен, чем небуферизованный вывод. В случае буферизованного вывода весь вывод сохраняется в переменной и сразу записывается на диск. Для небуферизованного вывода мы должны продолжать запись на диск.

Буферизованный вывод не рекомендуется для критических ошибок. В случае сбоя системы может возникнуть ситуация, когда выходные данные все еще находятся в буфере и не были записаны на диск, и сообщение об ошибке не может быть получено. Мы не можем позволить себе потерять данные об ошибках в случае сбоя системы, поэтому мы продолжаем записывать критические ошибки на диск, даже если он работает медленнее.

clogобычно используется для ведения журнала. Для регистрации некритических событий эффективность важнее, поэтому clogпредпочтительнее cerr.

объявление о засорении

 засорение внешнего потока;

Он определен в заголовочном файле "> заголовочный файл.

Гарантируется, что clogобъект будет инициализирован во время или до первого создания объекта типа ios_base::Init. clogне привязан ни к какому другому потоку.

«C» в слове clog относится к «персонажу», следовательно, clog означает «журнал символов».

Объект clog используется вместе с оператором вставки (<<) для отображения потока символов. Общий синтаксис:

 clog << varName;

или

 clog << "Некоторая строка";

Оператор извлечения может использоваться более одного раза с комбинацией переменных, строк и манипуляторов (например, endl):

 clog << var1 << "Some String" << var2 << endl;

Пример: как работает засор?

 #include #include using namespace std; int main() ( char fileName() = "data.txt"; ifstream infile(fileName); if(infile) cout << infile.rdbuf(); else clog << "Error while opening the file " << fileName << endl; return 0; )

В этой программе засорение используется для потоковой передачи данных журнала, поскольку ошибка в этом случае не критична для приложения. Таким образом, использование буферизованного вывода засора более эффективно.

При запуске программы вывод будет (если есть ошибка при открытии файла):

 Ошибка при открытии файла data.txt

Интересные статьи...