【问题标题】:How the same type of objects cout, cerr, clog perform differently?相同类型的对象 cout、cerr、clog 的表现如何不同?
【发布时间】:2012-11-17 00:32:17
【问题描述】:
extern ostream cout;
extern ostream cerr;
extern ostream clog;

cout、cerr 和 clog 被声明为 ostream 的类型。但是 cout 和 clog 有缓冲区,而 cerr 没有。

为什么相同类型的对象会有不同的行为?

【问题讨论】:

    标签: c++ iostream


    【解决方案1】:

    这三个对象具有相同的类型,但它们不是同一个实例。 ostream 的实例可以进行不同的配置;在这种情况下,这三个对象被配置为以特定方式处理每个对象的缓冲。这是有道理的:如果同一类的所有对象的行为方式完全相同,那么首先就没有理由将它们分开。

    【讨论】:

      【解决方案2】:

      constructor 采用 streambuf 选项

      explicit ostream (streambuf * sb);

      我猜他们每个人都使用不同的streambuf 输出,而那些streambuf 对象控制输出如何缓冲(或不缓冲)。

      【讨论】:

        猜你喜欢
        • 2011-04-16
        • 2011-01-25
        • 2011-01-16
        • 1970-01-01
        • 2010-12-01
        • 2016-05-10
        • 2020-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多