有没有办法将 "char * argv[]" 保存到 C++ 中的变量?

Is there a way to save "char * argv[]" to a variable in C++?

我希望能够将 argv 保存到一个结构中,以便它可以传递给这样的函数:

struct Parameters {
    int argc;
    char * argv[];
};

void Start(
    Parameters P
) {

};

int main (
    int argc,
    char * argv []
) {
    Parameters P;
    P.argc = argc;
    P.argv = & argv;


    return 0;
}

但是有:

clang++ -std=c++2a -stdlib=libc++ -rtlib=compiler-rt -Ofast Start.cpp -o Start && ./Start;

我收到这个错误:

Start.cpp:21:9: error: array type 'char *[]' is not assignable

有没有办法将 argv 保存到变量中?非常感谢任何帮助。

您可以简单地更改为:

struct Parameters  
{
    int argc;
    char ** argv;
};

您的 argv 指向 char 的指针数组将衰减为指向 char 的指针。

然后,你的 main 变得更简单了:

P.argv = argv;

一种简单的方法是将其转换为 vector 个字符串:

int main(int argc, char* argv[])
{
    // Note: use argv + 1 to skip the application name in args.
    //       If you want to include the application name then don't use
    //       the +1
    std::vector<std::string>    args(argv + 1, argv + argc);

    // Now this can be passed to functions easily.
    // args.size()  == number of arguments.
    // args[x] == the string for argument x

}