C++ cerr和clog之间的区别

C++ cerr和clog之间的区别

在C++中,输入和输出是以字节序列的形式进行的,通常称为流。cerr和clog都关联着标准C错误输出流stderr,但cerr 是未缓冲的标准错误流,而clog是带缓冲的标准错误流。在本文中,我们将详细介绍这两个流的区别,并通过实例加以说明。

cerr: 它是未缓冲的标准错误流,用于输出错误。这是 ostream 类的一个对象,类似于 cout 。它是未缓冲的,即当需要立即显示错误消息时使用。由于没有缓冲区,因此它无法存储错误消息以便稍后显示。因此,简单地说, cerr 是未缓冲的,它无法存储消息。

示例:

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

输出:

C++ cerr和clog之间的区别

clog: 它是带缓冲的标准错误流,用于输出错误。这也是 ostream 类的一个对象,类似于 cout 。它是带缓冲的,即首先将错误消息插入缓冲区,然后将其显示在屏幕上。由于存在缓冲区,因此它可以存储错误消息以便稍后显示,与 cerr 不同。因此,简单地说, clog 是带缓冲的,它无法立即显示消息。 clog 通常用于记录目的。对于非关键事件记录,效率更重要,因此首选 clog 而不是 cerr

示例:

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

输出:

C++ cerr和clog之间的区别

区别表:

ID cerr clog
1. 它是一个不带缓冲的标准错误流 它是一个带缓冲的标准错误流
2. 它用于显示错误。 它用于日志记录。
3. 它用于立即显示消息。 它不能立即显示消息。
4. 它不能存储消息以便以后显示。 它可以将消息存储在缓冲区中以便以后显示。
5. cerr中的“c”表示“字符”,’err’表示“错误”,因此cerr表示“字符错误”。 clog中的“c”表示“字符”,’log’表示“日志记录”,因此clog表示“字符日志记录”。
6. 它比clog不够高效,因为它是未缓冲的输出。 它比cerr更高效,因为它是带缓冲的输出。
7. 它适用于严重错误(可能导致系统崩溃的错误)。 它不适用于严重错误(可能导致系统崩溃的错误)。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程