C++ cerr

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";

这里,

  • << 是插入运算符
  • var_name 通常是 变量,但也可以是 数组 元素或容器的元素,如 vectorlistmap 等。

带插入运算符的 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()

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战