如何使用std:string参数迭代可变参数函数?

詹姆士
void foo(std::string arg, ...) {

   // do something with every argument

}

可以说我希望能够接受每个字符串参数,并在将其打印到新行之前附加一个感叹号。

stas.yaranov

最好的方法是使用pack参数例如:

#include <iostream>

// Modify single string.
void foo(std::string& arg)
{
    arg.append("!");
}

// Modify multiple strings. Here we use parameters pack by `...T`
template<typename ...T>
void foo(std::string& arg, T&... args)
{
    foo(arg);
    foo(args...);
}

int main()
{
    // Lets make a test

    std::string s1 = "qwe";
    std::string s2 = "asd";

    foo(s1, s2);

    std::cout << s1 << std::endl << s2 << std::endl;

    return 0;
}

这将打印出:

qwe!
asd!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章