我有以下功能:
template<typename... Args>
void Foo(Args && ... args)
{
std::stringstream stream;
(stream << ... << args);
// Do somethign with it
}
它可以完美地将参数组合成一个字符串,但是正如预期的那样,它给出的输出没有任何定界符。是否有可能以某种方式彼此分隔输入?
示例输出:
elg.Debug(“ asd”,“ qwe”,123);
//打印:asdqwe123
//应该打印类似:asd qwe 123
为此,我是否必须推出自己的stringstream替代品?
答案 0 :(得分:2)
template<typename... Args>
void debug(Args&& ... args)
{
std::ostringstream stream;
((stream << args << ' '), ...);
}
#include <iostream>
template<typename... Args>
void debug(Args&& ... args)
{
((std::cout << args << ' '), ...);
}
int main () {
debug("asd", 112, 0.04);
return 0;
}
输出:asd 112 0.04