如何在命令行中的某个字符串后捕获参数?
./executable.out -apps path_to_out
在上面的代码中,我想将path_to_out存储在字符串变量中。这样做的有效方法是什么?
答案 0 :(得分:4)
这取决于你想要什么样的选择。如果您只愿意使用单字母选项,则可以使用C库函数getopt
来解析命令行。如果您想要长选项(例如--apps
),可以使用getopt_long
,但这是一个GNU扩展,无法很好地移植。如果你想要真正的,真正花哨的选项解析,你可以使用类似GLib的东西。
当然,您可以自己滚动,迭代从1到argc
的参数,当遇到-apps
时,检查i+1 < argc
并抓住下一个参数。< / p>
答案 1 :(得分:1)
argv[argc-1]
已经有了你的值。
如果你的主要是:
int main(int argc,char **argv)
所有命令行参数都在char **argv
中。
在你的情况下:
argv[2]
是path_to_out。
如果你想在string
中复制它,你无论如何都可以这样做:
string path(argv[2]);
答案 2 :(得分:0)
看来,通过询问“在命令行上的一些字符串之后”,你指的是命令行参数-apps
以破折号开头的事实,这使它成为“选项”。
这样做的首选方法是使用预定义的库来处理选项,例如GNU系统上的getopt。
答案 3 :(得分:0)
以这种方式运行参数存储..
实施例:---&GT; ./executable.out -apps path_to_out
argv[0] will be "./executable.out"
argv[1] will be "-apps"
and argv[2] will be "path_to_out".