2010-09-08 4 views
1

J'essaye d'écrire un module v8 en C++; là, les fonctions reçoivent un nombre variable d'arguments dans un tableau. Je veux prendre ce tableau et appeler une fonction comme gettext et printf qui reçoit une chaîne formatée et c'est args nécessaire. La chose est, comment peut-on prendre un tableau et envoyer les éléments en tant qu'arguments à l'une de ces fonctions?Appel d'une fonction avec un nombre variable d'arguments avec un tableau en C++ (comme l'opérateur * de python)

En python, je ferais quelque chose comme ceci:

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) 

Comment cela peut-il être accompli en C++? (J'utilise v8 et Node.js, alors peut-être il y a une fonction ou une classe quelque part dans ces espaces de noms que je ne suis pas au courant)

Répondre

2

Voici une façon:

void foo(const char *firstArg, ...) { 
    va_list argList; 
    va_start(argList, firstArg); 

    vprintf(firstArg, argList); 

    va_end(argList); 
} 

En supposant que vous êtes essayant de faire un printf. Fondamentalement, va_list est la clé, et vous pouvez l'utiliser pour examiner les arguments, ou les passer à d'autres fonctions qui prennent va_list.

Questions connexes