C++ 中的 cerr
对象用于打印错误消息。它在 iostream 头文件中定义。
示例
#include <iostream>
using namespace std;
int main() {
// print error message
cerr << "Error!!";
return 0;
}
// Output: Error!!
cerr 语法
cerr
的语法是
cerr << var_name;
或
cerr << "Some String";
这里,
带插入运算符的 cerr
cerr
中的 "c" 代表 "character"(字符),"err" 意为 "error"(错误)。因此,cerr
的意思是 "character error"(字符错误)。
cerr
对象与插入运算符 <<
一起使用,以显示错误消息。例如,
int var1 = 25, var2 = 50;
cerr << var1;
cerr << "Some String";
cerr << var2;
<<
运算符可以多次使用,并结合变量、字符串和操纵符(如 endl
)
cerr << var1 << "Some String" << var2 << endl;
虽然我们可以使用 cout
来显示错误以调试程序,但最好始终使用 cerr
来显示错误。
这是因为,我们不必将错误流显示在屏幕上,而是可以稍后将错误流更改为写入文件。
示例:C++ cerr
在此程序中,我们将尝试读取文件 data.txt 的内容。假设该文件不存在,或者其中包含一些错误导致无法打开。
在这里,我们将使用 cerr
对象来通知用户此错误。
#include <iostream>
#include <fstream>
using namespace std;
int main() {
string file_name = "data.txt";
ifstream my_file(file_name);
if(my_file) {
cout << my_file.rdbuf();
}
else {
// print error message
cerr << "Error while opening the file " << file_name;
}
return 0;
}
输出
Error while opening the file data.txt
cerr 原型
cerr
在 iostream 头文件中定义的原型是
extern ostream cerr;
C++ 中的 cerr
对象是 ostream
类的对象。它与标准的 C 错误输出流 stderr
相关联。
cerr
对象确保在第一次构造 ios_base::Init
类型对象时或之前进行初始化。
构造 cerr
对象后,表达式 (cerr.flags
& unitbuf
) 非零,这意味着发送到这些流对象的所有输出都会立即刷新到操作系统。
此外,cerr.tie() == &cerr
,即 cerr.tie()
返回 &cerr
,这意味着在 cerr
上的任何输出操作之前都会执行 cerr.flush()
。