📜  C++ clog

📅  最后修改于: 2020-09-26 15:52:18             🧑  作者: Mango

C++中的clog对象是ostream类的对象。它与标准C错误输出流stderr相关联。

 

clogcerr都与stderr相关联,但是与cerr不同之处在于clog中的流是缓冲的,不会与cout自动绑定。

缓冲输出比无缓冲输出更有效。对于缓冲输出,所有输出都保存到变量中并一次写入磁盘。对于无缓冲的输出,我们必须继续写入磁盘。

对于严重错误,不建议使用缓冲输出。在系统崩溃的情况下,可能会出现以下情况:输出仍在缓冲区中,并且未写入磁盘,并且错误消息无法检索。在系统崩溃的情况下,我们无法承受丢失错误数据的风险,因此即使速度较慢,我们也会继续将严重错误写入磁盘。

clog通常用于记录目的。对于非关键事件日志记录,效率更为重要,因此clog优先于cerr。

堵塞声明

extern ostream clog;

它在头文件中定义。

确保在第一次构造ios_base::Init类型的对象期间或之前初始化该clog对象。 clog不与任何其他流绑定。

clog中的“ c”表示“字符”,因此clog表示“字符日志”。

阻塞对象与插入运算符 (<<)一起使用,以显示字符流。通用语法为:

clog << varName;

要么

clog << "Some String";

提取运算符可以与变量, 字符串和操纵符 (例如endl )结合使用多次:

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

示例:木c如何工作?

#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;
}

在此程序中,clog用于流式传输日志数据,因为这种情况下的错误对于应用程序而言并不重要。因此使用缓冲输出的堵塞物更为有效

运行程序时,输出为[如果打开文件时出错]:

Error while opening the file data.txt