C++ cerr 对象
定义和用法
cerr 对象用于输出错误消息。其行为与 cout 相同,但可以定向到不同的目的地,如错误日志文件。cerr 和 clog 总是写入相同的目的地。
有关更详细的用法,请参阅 <iostream> 中的 cout 对象。
与 cout 和 clog 不同,cerr 是不带缓冲的。带缓冲的输出会暂时将输出存储在变量中,直到满足某些条件时才写入目的地。带缓冲的输出更高效,因为它们对文件执行的写操作更少。cerr 是不带缓冲的,以便在程序崩溃之前将错误消息写入文件。
注意:cerr 对象在 <iostream> 头文件中定义。
实例
例子 1
使用 cerr 对象输出错误消息:
int x = 5;
int y = 0;
if(y == 0) {
cerr << "除零错误: " << x << " / " << y << "\n";
} else {
cout << (x / y);
}
例子 2
将 cerr 定向到文件而不是控制台:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int x = 5;
int y = 0;
// 将 "error.log" 设置为错误消息的输出文件
ofstream log("error.log");
cerr.rdbuf(log.rdbuf());
// 写入错误消息
if(y == 0) {
cerr << "除零错误: " << x << " / " << y << "\n";
} else {
cout << (x / y);
}
// 关闭文件
log.close();
return 0;
}