2017-02-06 85 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,這是通常的做法。