我用C ++编写程序,编译器是G ++
现在在终端中,如果我输入./main并输入它将运行。
但是我想添加一些标志:./ main -apple或./main -orange
苹果和橙是计算同一问题的两种不同方法。我该怎么做?我的意思是,当我们做linux的东西时,我们通常可以输入破折号,这是如何工作的以及我应该在程序中做些什么?
任何示例或链接?
提前致谢!
答案 0 :(得分:4)
int main(int argc, const char* argv[]) {
for(int i = 0; i < argc; ++i) {
// argv[i] contains your argument(s)
}
}
更多细节:
接受传递给您的程序的参数可以通过向main
添加两个参数来完成:一个int
,其中分配了您为程序提供的参数数量,以及一个const char* []
,这是一个C字符串数组。
一个例子:假设您有一个程序main
,它应该对参数apple
和orange
作出反应。通话可能如下所示:./main apple orange
。 argc
将为3(计数&#34; main&#34;,&#34; apple&#34;和&#34; orange&#34;),并且遍历数组将产生3个字符串。
// executed from terminal via "./main apple orange"
#include <string>
int main(int argc, const char* argv[]) {
// argc will be 3
// so the loop iterates 3 times
for(int i = 0; i < argc; ++i) {
if(std::string(argc[i]) == "apple") {
// on second iteration argc[i] is "apple"
eatApple();
}
else if(std::string(argc[i]) == "orange") {
// on third iteration argc[i] is "orange"
squeezeOrange();
}
else {
// on first iteration argc[i] (which is then argc[0]) will contain "main"
// so do nothing
}
}
}
这样你可以根据应用程序参数执行任务,如果你只想挤橙子,只需给出一个参数,比如./main orange
。