argc, argv 到底是干啥用的?

前言

在旧版本的IDE中新建一个C/C++源文件,你可能会看到这种样子的main函数

int main(int argc,char* argv[])
{
	return 0;
}

上面这个argc,argv到底有什么用呢?

分析

初探类型

先看argv,可以理解成它是一个string数组(char数组可以理解成一个string,为了方便叙述都用string来表示),而argc是一个int类型

int argc,char* argv[]

这两者的关系是:argc表示argv中存放string的个数,默认的argc=1,因为argv[0]就是你当前程序的路径。
执行下面代码:

#include<iostream>
using namespace std;
int main(int argc,char* argv[])
{
	cout<<"argc: "<<argc<<endl;
	cout<<"argv: "<<argv[0]<<endl;
	return 0;
} 

看到结果:
在这里插入图片描述

文件IO

看到这里你肯定明白了,argc是argv中存放string的数量,有了这个我们就可以遍历这个数组了
现在我们有了文件路径,可以干什么?没错 IO
首先我们新建一个文本文件叫MyTXT,里面输入This is a test.
在这里插入图片描述
运行如下代码,你会看到…

#include<iostream>
#include<fstream> 
using namespace std;
int main(int argc,char* argv[])
{
	ifstream Open;
	//这是个示例。在工程中IO务必检查文件是否存在
	Open.open(argv[1]);
	cout<<"argc: "<<argc<<endl;
	const int len=100;
	char str[len];
	while(Open.getline(str,len))
	{
		cout<<str;
	}
	return 0;
} 

什么也没有发生…因为我们没有读取文件。

怎么读取文件?打开win+R,输入cmd,打开我们熟悉的黑框框,首先切换目录,然后运行process MyTXT.txt(请不要输入process.cpp,这样会打开它而不是运行它。)
在这里插入图片描述

成功了!可以看到argc为2,说明argv里面有两个string
在这里插入图片描述

多个文件IO

编写代码

#include<iostream>
#include<fstream> 
using namespace std;
int main(int argc,char* argv[])
{
	ifstream *OpenAry=new ifstream[argc-1];
	for(int i=1;i<argc;i++)
	{
		OpenAry[i-1].open(argv[i]);
	}
	cout<<"argc: "<<argc<<endl;
	for(int i=0;i<argc;i++)
	{
		cout<<"name: "<<argv[i]<<endl;
	}
	const int len=100;
	for(int i=0;i<argc-1;i++)
	{
		char str[len];
		while(OpenAry.getline(str,len))
		{
			cout<<str<<endl;
		}		
	}

	return 0;
} 

新建一个txt,名字为MyTXT2,修改内容为This is A test.
输入下图命令,成功读取两个文本中的内容。
在这里插入图片描述

自定义格式

下面玩点好玩的,重命名刚刚两个文件后缀为mtxt
在这里插入图片描述
点击文件更改打开方式为我们的process.exe程序
在这里插入图片描述
然后在cmd中运行命令,发现可以成功读取。
在这里插入图片描述
这样你就可以自定义文件格式,然后使用你的程序来IO了~~

总结

argc,argv可以使程序接受命令行参数,更方便的IO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值