C++ Cerr

2024 年 8 月 28 日 | 3 分钟阅读

C++ 标准库中提供了各种流来处理输入和输出活动。其中一个流称为 cerr,它是 “标准错误” 的缩写。与用于通用输出的 cout 流不同,Cerr 专门用于错误消息和诊断。在本文中,我们将探讨 cerr 的功能,回顾其语法和 C++ 用法,并提供代码示例及其相关结果。

cerr 流连接到标准错误设备,通常是控制台终端。在 C++ 程序执行期间,它主要用于输出错误消息、警告和其他诊断数据。默认情况下,由于 cerr 没有缓冲,因此每个字符消息都会立即显示在输出设备上。

您必须在 C++ 程序中包含 <iostream> 头文件才能使用 cerr,它提供了对 C++ 标准输入/输出功能的访问。以下是使用所需头文件的示例

运算符可用于以类似于 cout 流的方式向 cerr 流写入消息。以下是写入 cerr 的语法

语法

这里,message 是您要显示的错误消息诊断数据std::cerr 代表标准错误流。我们来看一个例子

示例

输出

An error occurred!

说明

在上面的示例中,运算符用于将错误消息 “An error occurred!” 写入 cerr 流。控制台立即显示该消息。

cout 类似,cerr 允许您使用 iomanip 头文件提供的各种操作符来准备输出。例如,您可以更改输出的宽度和对齐方式,以及浮点数的精度。以下是 cerr 中格式化的示例

示例

输出

The value of pi is: 3.1416

使用 std::setprecision(4)std::fixed,输出精度设置为 4 位小数。它确保在显示 pi 的值时达到所需的精度水平。

使用 rdbuf() 函数

控制台默认连接到 cerr 流,通常是标准错误设备。可以将 cerr 命令重定向到文件以记录错误消息诊断信息。您可以使用 rdbuf() 函数文件流 (<fstream>) 来实现此目的。这是一个例子

示例

输出

错误

以下消息将出现在日志文件 "error.log" 中:

An error occurred!

说明

我们在代码中构造了一个名为 errorLogofstream 对象,并将其链接到文件 "error.log"。之后,使用 rdbuf() 方法cerr 流转发到 errorLog 流缓冲区。因此,发送到 cerr 的任何消息都将发送到指定的日志文件,而不是终端。

错误的处理报告是 cerr 最常见的用例之一。您可以使用 cerr 向用户提供有关程序运行期间发生的错误的有用信息。通过将错误消息导出到 cerr,您可以确保错误消息可见且与常规程序输出不同。这是一个例子

示例

输出

Error: Division by zero!

说明

在这个演示中,我们尝试将 10 除以变量 "divisor" 的初始值,该变量设置为。由于除以零是被禁止的,如果除数为 0,我们将向 cerr 发送一条错误消息。

结论

在这篇博客文章中,我们研究了 C++ cerr 流,它用作诊断错误消息标准错误流。我们讨论了它的语法用法,并附带了展示 cerr 功能的代码示例。此外,我们还讨论了输出格式化和将 cerr 重定向到文件。正确使用 cerr 可以改善错误处理,并在运行 C++ 程序时为用户提供有用的信息。