对象
<iostream>

std::cerr

extern ostream cerr;
标准错误输出流
ostream 的对象,表示面向窄字符(char 类型)的标准错误流。它对应于 C 流 stderr

标准错误流是由环境决定的字符输出目的地。这个目的地可能被多个标准对象(如 coutclog)共享。

作为一个 ostream 类的对象,可以使用插入运算符 (operator<<) 将格式化数据写入其中,也可以使用成员函数(如 write)写入非格式化数据。

该对象在头文件 <iostream> 中声明,具有外部链接静态存储期:它在程序的整个生命周期内都存在。

静态初始化顺序而言,保证 cerr 在类型为 ios_base::Init 的对象首次构造时不晚于其被正确构造和初始化。

cerr 不与任何其他输出流绑定(见 ios::tie)。
静态初始化顺序而言,保证 cerr 在类型为 ios_base::Init 的对象首次构造时不晚于其被正确构造和初始化,包含 <iostream> 至少算作对此类具有静态存储期的对象进行了一次初始化。

cerr 与标准输出流 cout 绑定(见 ios::tie),这表示在对 cerr 执行每个 I/O 操作之前,cout 的缓冲区都会被刷新(见 ostream::flush)。

默认情况下,cerrstderr 同步(见 ios_base::sync_with_stdio)。

程序不应将对 cerr 的输出操作与对 wcerrwclog 的输出操作(或与对 stderr 的其他宽字符导向的输出操作)混合使用:一旦对其中任一者执行了输出操作,标准错误流就会获得一种确定的流向(窄字符宽字符),之后只能通过在 stderr 上调用 freopen 才能安全地更改该流向。

有关 cerr 支持的操作的更多信息,请参阅其类型 ostream 的参考文档。

另见