2017-02-06 47 views
-1

哪个版本的功能(myfunc2myfunc3)在所有平台上都是正确的。正确使用ios

ostream &myfunc1(ostream &os) const { 
    // 
    return os; 
} 
ostream &myfunc2(ostream &os) const { 

    os << myfunc1(os); 
} 

ostream &myfunc3(ostream &os) const { 

    os << myfunc1(os).rdbuf(); 
} 
+0

你是否缺少'myfunc2'和'myfunc3'中的每个'return'语句? –

回答

2

你并不需要访问数据流,它访问的streambuf基础缓冲区的rdbuf()

概念上,ostreamstreambuf的前端。你在做什么myfunc3是直接从streambuf访问rdbuf,绕过ostream的接口。

这可以完成,但它并不常见。坚持到myfunc2,这是通常的做法。