3

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

4

3 回答 3

3

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

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

——詹姆斯·坎泽

于 2011-03-14T09:05:58.107 回答
1

这意味着具有不同名称的对象,例如:

ostream &lbw = cout;

lbw << "Shahid out" << "Sachin in" << endl; //goes to cout!
于 2011-03-14T09:01:10.783 回答
1

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

ofstream file;
file.rdbuf(cout.rdbuf());

// writes to cout
file << "hello";

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

if(&file == &cout)
    // no, it doesn't
于 2011-03-14T09:06:42.023 回答