C++ 如何为C/C+;传递可选的命令行参数+;?
我正在尝试编写一个程序,在某些限制条件下,使用数字0-9计算不同可能的密码数。它需要一个必需的命令行参数,它将是密码中的位数,同时还有一个可选参数,它将是禁止的数字。没有输入参数将意味着允许所有数字 例如,我的程序是否应称为组合:C++ 如何为C/C+;传递可选的命令行参数+;?,c++,c,command-line-arguments,C++,C,Command Line Arguments,我正在尝试编写一个程序,在某些限制条件下,使用数字0-9计算不同可能的密码数。它需要一个必需的命令行参数,它将是密码中的位数,同时还有一个可选参数,它将是禁止的数字。没有输入参数将意味着允许所有数字 例如,我的程序是否应称为组合: $ combinations 8 3 #find number of passwords of length 8 with '3' not allowed 我试着查找它,发现可以将参数设置为函数的可选参数 int myfunction( int optiona
$ combinations 8 3 #find number of passwords of length 8 with '3' not allowed
我试着查找它,发现可以将参数设置为函数的可选参数
int myfunction( int optional = 3);
比如说。但是,如果没有输入任何内容,这似乎会将该值设置为默认值。我需要它允许所有数字,如果它留空。对于命令行参数,我该如何做呢 命令行参数作为参数从命令行传递到程序中,并传递给
main
函数。其签名需要是intmain(intargc,char**argv)
第二个参数是一个以null结尾的字符串数组,其中包含程序调用中传递的每个参数(包括程序名)。第一个是数组中有多少字符串
您需要检查
argc>2
,然后解析该数字的argv[2]
您可以使用argc
获取传递给程序的参数总数。此计数器提供包括文件名在内的参数。因此,在给定的示例中,argc
将为3。您可以围绕它构建其余的逻辑代码>你不是在写C;只有C++允许默认参数。但是,这与命令行参数解析无关。基本上,您将在main()
中查看argc
,并确定argc==2
表示“刚好长度”,而argc==3
表示“长度和禁止数字”。任何其他内容都将被拒绝并显示使用情况消息(fprintf(stderr,“用法:%s长度[禁止]\n”,argv[0]);
或其左右)。您还将检查参数是否有效。为了完整起见,int-main(int-argc,char*argv[])
也是可以接受的。@DavidBowling,是的,但它在语法上比另一种形式更具吸引力。