c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)

int main(int argc, char** argv)的解释

最近开始学opencv,看见例程中一直会出现int main(int argc, char** argv)的字样来帮助判断输入参数是否有误,一番查询,大概知其一二,记录一下。
说明:工具为配置了C++的Visual Studio2019(Visual Studio配置opencv3可见分区另一篇博文)

argc和argv

int main(int argc, char** argv):
main函数中接受的参数分别是:

  1. argc代表的是命令行输入的参数的数量,至少为1(argv[0]即.exe文件的路径)。
  2. argv为指针表示的参数, argv[0]表示的是输入命令行的第一个参数,argv[1]表示输入命令行的第二个参数,以此类推。
    命令行参数在程序开始运行的时候会传递给程序,然后根据传入的数量和内容作为参数传递给main函数。
    下面我们通过一个程序来打印一下argc和argv:
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
	//命令行输入的参数数量(至少为1)
	cout << "argc=" << argc << endl;
	//第一个参数
	cout << "argv[0]=" << argv[0] << endl;
	//第二个参数
	cout << "argv[1]=" << argv[1] << endl;
	//第三个参数
	cout << "argv[2]=" << argv[2] << endl;
	system("pause");
	return 0;
}

直接运行会在argv[1]那一行报错,因为此时程序只接收到了exe程序所在路径一个参数,参数数量argc = 1
在这里插入图片描述
我们需要通过命令行手动输入参数或者在项目调试中设置命令行参数

方法1:在命令行输入参数

首先进入项目代码生成的exe程序所在的目录,然后在上方目录栏手动输入cmd,按Enter唤起命令行
在这里插入图片描述
在命令行输入程序名称show_argc_argv.exe,后面随便输入两个参数,我这里输入的是 5 和 lol,Enter运行,打印结果如下:
在这里插入图片描述
**argc = 3 **表示命令行输入了三个参数(show_argc_argv.exe,5,lol),下面分别打印出了第一、第二、第三个参数argv[0],argv[1],argv[2]

方法2:在项目中设置命令行参数

打开项目>>>项目属性
在这里插入图片描述
找到调试>>>命令行参数,输入5 lol(空格区分),然后点击确定,运行程序
在这里插入图片描述
打印出程序结果,与方法1类似,唯一区别是这里第一个参数打印的是exe程序所在路径
在这里插入图片描述
————————————————————————————————————————————————————————
更新:Learning Opencv3 例子调试跑通可采用方法2
(Visual Studio配置opencv3可见分区另一篇博文)以Example 2-6为例,在这里插入图片描述
这里提示命令行需要提供两个参数,并且第二个参数argv[1]是传入imread函数中图片所在路径。如果在命令行没有提供两个参数,会直接return 0程序结束。
根据上面的方法2,只需要在命令行参数输入图片所在路径,注意使用 " \ " 进行分隔
在这里插入图片描述
点击确定,便可以成功运行程序,Example 2-6运行结果如下:
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值