我有一个可以接受命令行参数的程序,我想从函数中访问用户输入的参数。我该如何将*argv[]
从int main(int argc, char *argv[])
传递给该函数?我对指针的概念还比较新,*argv[]
看起来有点复杂,让我自己很难解决。
想法是通过将所有要处理参数的工作移动到库文件中,使我的main
尽可能保持简洁。当我成功地在main
之外获取这些参数时,我已经知道了该如何处理它们。我只是不知道该如何将它们传递到那里。
我正在使用GCC。 提前感谢您。
我有一个可以接受命令行参数的程序,我想从函数中访问用户输入的参数。我该如何将*argv[]
从int main(int argc, char *argv[])
传递给该函数?我对指针的概念还比较新,*argv[]
看起来有点复杂,让我自己很难解决。
想法是通过将所有要处理参数的工作移动到库文件中,使我的main
尽可能保持简洁。当我成功地在main
之外获取这些参数时,我已经知道了该如何处理它们。我只是不知道该如何将它们传递到那里。
我正在使用GCC。 提前感谢您。
只需编写类似以下的函数:
void parse_cmdline(int argc, char *argv[])
{
// whatever you want
}
你可以定义一个名为parse_cmdline
的函数,在main
中以parse_cmdline(argc, argv)
的形式调用它。这并不涉及任何魔法。
实际上,你不一定需要传递argc
,因为argv
的最后一个成员保证是空指针。但既然你有了argc
,那么也可以将其传递。
如果该函数不需要知道程序名称,则还可以选择将其调用为
parse_cmdline(argc - 1, argv + 1);
SomeResultType ParseArgs( size_t count, char** args ) {
// parse 'em
}
或者...
SomeResultType ParseArgs( size_t count, char* args[] ) {
// parse 'em
}
然后...
int main( int size_t argc, char* argv[] ) {
ParseArgs( argv );
}
只需将argc
和argv
传递给您的函数即可。
getParams(argc,argv)
这样将它们传递给我的ObjC++类方法,但是然后必须像static std::map<std::string,std::string> getParams(int argc, const char **argv)
那样声明该函数。请注意**argv
。然后,在类方法内部,我可以像在main
函数中一样正常使用argv
。(返回结果上的map
内容是因为我的函数将变量转换为键=值映射对。你也可能这样做。) - Volomike