【问题标题】:What are 'aliased' stream buffers?什么是“别名”流缓冲区?
【发布时间】:2011-03-14 08:53:55
【问题描述】:

什么是“别名流缓冲区”?我在对我的 answer 的评论中遇到了这个词。

【问题讨论】:

    标签: c++ alias streambuf


    【解决方案1】:

    我以前从未听说过这个词,但在你引用的线程中, 使用它的人也举了一个例子:两个流 使用相同的流缓冲区。

    当然,只是因为两个流不使用相同的 streambuf,并不意味着写入它们的数据不会 最终在同一个地方结束;他们没有别名 同一个水槽,如果这就是意思的话。有过滤 streambuf,将实际的下沉和采购转发到 另一个streambuf,在大多数系统上,可以打开 系统级别的文件,并将一个(或两个)streambuf 连接到 它。

    -- 詹姆斯·坎泽

    【讨论】:

    • +1 用于解释我的术语 :) 我使用术语别名是因为它类似于指针别名的概念
    【解决方案2】:

    表示不同名称的对象,例如:

    ostream &lbw = cout;
    
    lbw << "Shahid out" << "Sachin in" << endl; //goes to cout!
    

    【讨论】:

    • 就这样吗?它只是一个不同的参考名称?
    • 使标准输出反锯齿
    • @Naveen:我错过了什么吗?如果我错了,请纠正我。 :-)
    • @Nawaz:我没有答案,我期待比这更复杂 :) 看到这个我很惊讶。
    • @Naveen: Ohh...在 C++ 中,您可以拥有一个非常长的命名空间的 short alias,但是当涉及到对象时,它是一个有时称为别名的引用!跨度>
    【解决方案3】:

    评论中的意思可能是这样的:

    ofstream file;
    file.rdbuf(cout.rdbuf());
    
    // writes to cout
    file << "hello";
    

    所以现在那里的检查不起作用:

    if(&file == &cout)
        // no, it doesn't
    

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 2014-06-11
      • 1970-01-01
      相关资源
      最近更新 更多