📅  最后修改于: 2023-12-03 14:40:03.322000             🧑  作者: Mango
在C++中,输出流有两种可以在程序中使用:cerr
和clog
。这两种流都被称为"标准错误流",因为它们用于输出程序运行期间的错误信息。
cerr
是std::cerr
对象,被定义为静态常量。它是一个同步流,用于输出程序发生的错误信息,它总是在其他输出之前输出这些错误信息。cerr
在使用时,会将数据打印到标准错误设备,例如终端或shell的错误窗口。
以下是使用cerr
输出程序运行期间错误的示例:
#include <iostream>
using namespace std;
int main() {
int x = 10;
int y = 0;
if (y == 0) {
cerr << "Error: cannot divide by zero." << endl;
} else {
cout << "Result: " << x / y << endl;
}
return 0;
}
在上面的示例中,当y
的值为0时,程序使用cerr
输出错误信息。运行此程序时,控制台将输出以下内容:
Error: cannot divide by zero.
cerr
流通常用于输出运行时错误,例如内存分配错误或无效参数值。由于cerr
流是同步流,它可以立即输出错误信息,无论其他流是否缓冲数据。
clog
是std::clog
对象,也被定义为静态常量。虽然clog
也是一个同步流,但它通常用于输出程序的信息消息,而不是错误消息。它也将数据打印到标准错误设备,例如终端或shell的错误窗口。
以下是使用clog
输出程序信息的示例:
#include <iostream>
using namespace std;
int main() {
int x = 10;
int y = 5;
clog << "Calculating result..." << endl;
cout << "Result: " << x / y << endl;
clog << "Calculation complete." << endl;
return 0;
}
在上面的示例中,程序使用clog
输出信息消息,并在计算完成后再次使用clog
输出消息。当运行此程序时,控制台将输出以下内容:
Calculating result...
Result: 2
Calculation complete.
由于clog
流是同步流,它可以按照程序的顺序输出信息消息,而不会与其他输出流中的数据产生冲突。
总的来说,cerr
和clog
之间的区别在于它们的用途。cerr
用于输出程序运行期间发生的错误,而clog
用于输出程序信息消息。此外,cerr
是一个实时流,它可以在其他流之前输出错误消息,而clog
则输出信息消息,并按照程序的顺序打印到控制台。
因此,程序员在编写程序时应考虑使用哪种输出流,以便正确显示信息和错误。