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