C/C++中的命令行参数
时间:2020-02-23 14:29:54 来源:igfitidea点击:
在本文中,我们将研究如何在C/C++中使用命令行参数。
如果要从命令行将任何输入字符串传递到主程序,则命令行参数非常有用。
这些参数作为参数传递给main()函数。
让我们看一下如何有效地使用它们。
为什么要使用命令行参数?
通常,对于我们而言,直接为程序提供输入非常方便。
一种常见的方式是使用scanf()
/getchar()
等来等待用户输入。
但是,这些呼叫浪费大量时间等待,并且需要用户手动输入输入。
只需将这些输入提供给我们的主程序,便可以节省大量时间!
格式如下:
./executable input1 input2
该程序将自动将这些命令行参数存储在特殊变量中,我们可以从中直接访问它们!
启动程序时,只需输入一次即可。
让我们看看我们现在如何使用它们。
C/C++中的命令行参数–特殊变量
该程序会将命令行参数传递给main()
函数。
在C/C++中,main()函数为这些参数引入了两个附加参数。
argc
->参数计数。
给出我们传递的参数数量(还包括程序名称)argv
->参数向量。
这是一个char *
字符串数组。
这些是参数值本身。
因此,argv [0]
是程序本身的名称,argv [1]
…argv [argc-1]
将是我们的所有命令行参数。
int main(int argc, char* argv[]);
要查看实际效果,请举一个例子。
使用命令行参数–一个简单的例子
让我们考虑一个程序,该程序将两个字符串连接起来,作为输入。
我们将两个命令行参数传递给我们的程序,因此我们的" argc"总数必须为3(包括程序名称)。
我们可以这样编写程序:
#include <iostream> #include <string> using namespace std; string concat_strings(string s1, string s2) { return s1 + s2; } int main(int argc, char* argv[]) { cout << "You have entered " << argc << " arguments:" << "\n"; if (argc != 3) { cerr << "Program is of the form: " << argv[0] << " <inp1> <inp2>\n"; return 1; } string result = concat_strings(argv[1], argv[2]); cout << "Result: " << result << endl; return 0; }
如果我们的可执行文件名为test.out
,则在我的Linux机器上,我使用以下命令运行可执行文件:
./test.out Hello _theitroad
请注意,参数以空格分隔。
因此,我们的命令行参数为:" Hello"和" _theitroad"
输出
You have entered 3 arguments: Result: Hello_theitroad
大!这似乎按预期工作,因为第一个参数是程序本身的名称。
现在,我们尝试使用4个参数来运行它。
./test.out Hello from theitroad
输出
You have entered 4 arguments: Program is of the form: ./test.out <inp1> <inp2>