[英]Passing parameters to a function from the Bash command line
我正在Bash上的命令行运行C ++程序,该程序位于Linux环境中。 我很好奇你如何从命令行传递一个参数。 这是我的计划:
#include <iostream>
using namespace std;
int large_pow2( int n );
int main()
{
int value = 15;
int largest_power = large_pow2(value);
cout << "The highest power of 2 in " << value << " is " << large_power << "." << endl;
return 0;
}
int large_pow2( int n )
{
int i = n
int j = i & (i - 1);
while( j != 0)
{
i = j;
j = i & (i - 1);
}
return j;
}
编译程序后,我希望能够使用命令行传入一个用于value
。 例如,要运行您输入的程序./"program_name"
其中"program_name"
是我的程序名称,不带引号。 有没有办法设置value = n
或其他什么? 当我运行该程序时,假设我希望n
为20
所以在命令行中输入类似./"program_name" 20
。 然后程序将以n = 20
运行。 有没有办法做到这一点? 我是Linux环境和Bash的新手,所以还不太清楚如何处理它。
在int main(int argc, char *argv[])
使用argc
和argv
并相应地修改代码。
argc
参数跟踪从CLI
传递给您的程序的参数数量,并且始终> = 1。 1
是程序的名称。 所以argc[0]
是程序名。
argv
包含命令行参数,而不是程序名,并且始终是char字符串。 因此,如果你不想要字符串,我们需要像atoi
一样使用适当的转换器。
所以你的代码看起来像是,错误检查不是为了简单起见
int main(int argc, char *argv[])
{
//Now we expect argc ==2, program value, This will when argc != 2
// We should use if in real scenario
assert(argc == 2);
int value = atoi(argv[1])
int largest_power = large_pow2(value);
cout << "The highest power of 2 in " << value << " is " << large_power << "." << endl;
return 0;
}
你的main方法可以采用(int argc,char ** argv)这是参数的计数和NUL终止的args。 程序路径是argv [0]所以atoi(argv [1])可能就是你想要的。 检查argc == 2。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.