用C++中的数组调用具有可变数量参数的函数(如Python的*运算符)

Calling a function with variable number of arguments with an array in C++ (like python's * operator)

我试图在C++中编写一个V8模块;在那里,函数接收数组中的变量数目。我想取这个数组,调用一个像gettextprintf这样的函数,它接收一个格式化的字符串,它是必需的参数。问题是,如何接受一个数组并将元素作为参数发送给这些函数之一?

在Python中,我会这样做:

1
2
3
4
def the_function(s, who, hmany): print s%(who, hmany)

the_args = ["Hello, %s from the %d of us","world", 3]
the_function(*the_args)

如何在C++中实现?(我使用的是V8和node.js,所以可能在这些名称空间中有一个我不知道的函数或类)


这里有一种方法:

1
2
3
4
5
6
7
8
void foo(const char *firstArg, ...) {
    va_list argList;
    va_start(argList, firstArg);

    vprintf(firstArg, argList);

    va_end(argList);
}

假设你正在尝试打印。基本上,va_list是关键,您可以使用它来检查参数,或者将它们传递给接受va_list的其他函数。