如何在va_start中使用字符串?

New*_*bie 6 c++

由于某种原因,我无法得到这个工作:

    void examplefunctionname(string str, ...){
...
    va_start(ap, str.c_str());
Run Code Online (Sandbox Code Playgroud)

我也没有得到这个工作:

    void examplefunctionname(string str, ...){
...
    int len = str.length();
    char *strlol = new char[len+1];
    for(int i = 0; i < len; i++){
        strlol[i] = str[i];
    }
    strlol[len] = 0;
    va_start(ap, strlol);
Run Code Online (Sandbox Code Playgroud)

但这样做:

    void examplefunctionname(const char *str, ...){
...
    va_start(ap, str);
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何使用字符串而不是const char *那里?

我打电话时输出随机数 examplefunctionname("%d %d %d", 1337, 1337, 1337)

Cas*_*bel 5

从文档:

va_start(va_list ap, last)...参数last是变量参数列表之前的最后一个参数的名称,即调用函数知道类型的最后一个参数.

你已经在你的工作示例中正确地完成了这个:va_start(ap, str),并且str是最后一个已知的参数.但在另外两个例子中,你将奇怪的东西传递给了va_start.