Re: [討論] 有無匿名ostream物件做string format?

作者: LPH66 (-6.2598534e+18f)   2017-11-28 04:22:17
※ 引述《Killercat (殺人貓™)》之銘言:
<snip>
: stringstream log;
: log << "This is a PEN : " << pen << " PINEAPPLE!";
: Log(TYPE, CLIENT, log.str().c_str());
: 但是顯然這還是有點麻煩
: 自己是寫了一個ostream拼貼物件讓他看起來像是這樣
: 包含了一個operator const char*()
: Log(TYPE, CLIENT, log << "This is a PEN : " << pen << " PINEAPPLE!");
: 來讓他能夠串起來,讓他能夠吃大多數的變數型別
: 問題來了,有沒有std函數能滿足這個需求?
: Log希望能讓他們寫的方便一點,不然他們一個個都不想Log了 -o-||
要從你原先的改法裡單純把變數名吃掉的話是可以硬兜出來啦:
static_cast<stringstream&>(
stringstream() << "This is a PEN : " << pen << " PINEAPPLE!"
).str().c_str()
要 static_cast 的原因是 operator << 回傳的是 ostream&
不過這顯然比起令一個變數出來還囧...
話說回來, 你這個拼貼物件其實再加一點工就是 boost::format 了
所以如果可以用 boost 的話就用它吧
作者: Killercat (殺人貓™)   2017-11-28 06:42:00
對吼好像就是boost::format...我看看我們專案能不能用
作者: ibmibmibm (BestSteve)   2017-11-28 19:25:00
不過boost::format效能不太好XDhttps://github.com/fmtlib/fmt
作者: Killercat (殺人貓™)   2017-11-28 20:40:00
我們這邊CI還沒搞定 暫時不能弄得太複雜...先用土炮吧感謝幫我解答的各位 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com