• C++中 int main(int argc, char **argv) 命令行传递参数



    C++中,比较常见的是不带参数的主函数int main(),如果使用命令行执行程序,主函数也可以接收预先输入的参数,形式如下。

    int main(int argc,char **argv)

    • argc:命令行参数个数(Argument Count)
    • argv:命令行参数向量(Argument Vector)

    例如,我们在命令行输入Project.exe string1 string2 string3时,argc=4,表示输入的参数个数是4,分别是Project.exestring1string2string3

    argv是一个字符串数组,对应存储这4个字符串,即argv[0] = "Project.exe", argv[1] = "string1", argv[2] = "string2", argv[3] = "string3"。因此可以在主函数中,后续通过argc和argv获取参数信息。

    int main(int argc,char **argv)也可以写成int main(int argc, char *argv[])。

    示例

    假设要通过命令行接收一串数字,程序输出这串数字的和。

    #include <iostream>
    #include <cstdlib>
    
    // int main(int argc, char *argv[])
    int main(int argc, char **argv)  
    {
    
    	int sum = 0;
    	for (int i = 1; i < argc; ++i)
    	{
    		int num_i = atoi(argv[i]);  // 字符串转换成整数
    		sum += num_i;
    	}
    	std::cout << sum;
    
    	return 0;
    }
    
    

    编译程序,生成.exe文件,windows环境下,可以进入cmd界面,通过cd指令进入exe文件的所在目录。

    比如我这里所生成的Project.exe文件路径为 E:C++ ProjectsMediaTek3 数列求和Project1Debug,在cmd界面,先输入e:,然后回车,进入E盘,再输入cd E:C++ ProjectsMediaTek3 数列求和Project1Debug,回车,从而进入exe文件的所在目录。

    接下来输入Project1.exe 11 12 13 14,回车,结果显示为50。

  • 相关阅读:
    call、apply、bind函数的理解以及手写。
    父div里两个子div(inline-block),为什么两个子div中间会有小缝隙,如何解决?
    手写柯里化
    arguments的理解
    New
    BFC
    useCallBack和useMemo的用法
    观察者模式和发布订阅模式
    grid布局
    Android常见输入法的包名和主类名
  • 原文地址:https://www.cnblogs.com/Ran-Chen/p/9387899.html
Copyright © 2020-2023  润新知