根据折叠表达式创建带分隔符的字符串

时间:2019-04-10 05:55:04

标签: c++ visual-c++ c++17 fold-expression

我有以下功能:

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替代品?

1 个答案:

答案 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