※ 引述《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 的话就用它吧