参考了网上的知识加以自身理解与整合,主要是review时方便
在 C++ 中,cerr 是一个标准错误流对象,用于向标准错误设备输出错误信息。它在 iostream 头文件中定义,与 cout 类似,但有一些关键区别。
基本用法
cerr 对象通常用于打印错误消息。它与插入运算符 << 一起使用,以显示错误消息。例如:
#include <iostream>
using namespace std;
int main() {
// 打印错误消息
cerr << "Error!!";
return 0;
}
输出结果为:
Error!!
在这个例子中,cerr 直接将错误消息输出到标准错误设备
与 cout 的区别
- 缓冲机制:cout 是一个经过缓冲的输出流,这意味着它会先将数据存储在缓冲区中,然后再输出到显示器。而 cerr 是一个不经过缓冲的输出流,错误消息会立即输出到显示器
- 重定向:cout 可以被重定向到文件或其他输出设备,而 cerr 通常不会被重定向,确保错误信息能够及时显示在显示器上(不知道是啥,但先放着,不用太钻牛角尖了)
示例:文件读取错误处理
在下面的示例中,我们尝试读取一个不存在的文件,并使用 cerr 输出错误消息:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
string file_name = "data.txt";
ifstream my_file(file_name);
if(my_file) {
cout << "open successfully"<<endl;
} else {
// 打印错误消息
cerr << "Error while opening the file: " << file_name;
}
return 0;
}
输出结果为:
Error while opening the file: data.txt
在这个例子中,如果文件 data.txt 不存在或无法打开,cerr 会立即输出错误消息
调试中的应用
使用 cerr 进行调试是一个好习惯,因为它可以确保错误信息在程序出错时立即显示,有助于快速发现和解决问题。例如,在调试代码时,可以使用 cerr 输出调试信息,而不必担心这些信息会被误认为是程序的正常输出
总之,cerr 是一个非常有用的工具,特别是在需要快速输出错误信息和调试程序时