有没有办法将 "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
}
我希望能够将 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
}