C++编写命令行命令---copy模仿版

编写自己的第一个cmd命令——copy命令

  • 编译环境vs2019;
  • 注意事项:由于拷贝过程可能会出现中文乱码,如果出现中文乱码,建议将系统设置为UTF-8编码;
  • 注:只是cmd命令行copy命令的模仿版;
  • 关于运行程序出现错误的解决方案末尾附上;
首先我们先来了解一下"int main(int argv,char* argc[])"参数的意义:
  • 第一个参数表示命令行参数个数,如"copy student.txt stu.txt"为三个参数;
  • 第二个参数表示命令,如argc[1]=copy, argc[2]=student.txt, argc[3]=stu.txt;
文件读写的一般操作:
  1. 建立输入/输出流对象,ifstream ifs/ ofstream ofs;
  2. 打开文件,ifs.open(“文件名”,打开方式)/ofs.open(“文件名”,打开方式);
  3. 判断文件是否打开成功,if(!ifs.is_open()){…打开失败的操作…},is_open()函数是流对象函数,打开文件成功返回true,否则返回false;
  4. 读/写文件操作;
//读文件第一种方式
char buf[1024]={0};
while(ifs>>buf)
{ cout<<buf<<endl; }
//第二种方式
char buf[1024]={0};
while(ifs.getline(buf,sizeof(buf)))
{cout<<buf<<endl;}
//第三种方式
string buf;
while(getline(ifs,buf))
{cout<<buf<<endl;}
//第四种
char c;
while(c=ifs.get()!=EOF)
{cout<<c;}
  1. 关闭文件,ifs.close()/ofs.close();
  2. 到这算是说完了,下面请看整体源代码:
#include <iostream>
#include <fstream>

using namespace std;

int main(int argv, char* argc[])
{
	if (argv != 3)
	{
		cout << "命令格式不正确..." << endl;
	}
	else
	{
		//cout << argc[0] << endl;
		//cout << argc[1] << endl;
		//cout << argc[2] << endl;
		cout << "是否写入文件" << argc[1] << ":y/n/a" << endl;

		char keyChar;
		cin >> keyChar;
		if (!cin.fail()&&keyChar=='y'||keyChar=='Y')
		{
			ifstream ifs;
			ofstream ofs;
			ifs.open(argc[1],ios::in);
			ofs.open(argc[2],ios::out);
			if (!ifs.is_open())
			{
				cout << "打开文件" << argc[1] << "失败..." << endl;
				return -1;
			}
			/*if (!ofs.is_open())
			{
				cout << "打开文件" << argc[2] << "失败..." << endl;
				return -1;
			}*/
			char data[1024] = { 0 };

			while (ifs.getline(data, sizeof(data)))
			{
				if (*data == '\n')
					ofs << '\n';
				ofs << data << endl;;
			}

			ifs.close();
			ofs.close();
			cout << "已复制         1个文件" << endl;
		}
		else
		{
			cout << "已复制         0个文件" << endl;
		}
	}
	return 0;
}
运行错误解决方案
  • 因为命令行命令不能在控制台运行,所以运行之后就会提示命令格式不正确;
  • 解决方案:在cmd命令行中,用cd命令切换到该项目的Debug文件目录下,运行该命令,例如:my_copy student.txt stu.txt;
  • my_copy是我的项目名称,就是编译后生成的文件名,my_copy.exe;
拷贝中文乱码解决方案
  • 打开桌面上的控制面板(如果桌面上没有控制面板,按win+r输入control,然后按enter键即可进入,win键是你的电脑键盘上左下角的四个方块;)
  • 选择时钟和区域 -》选择区域 -》选择管理 -》选择更改系统区域设置 -》将“Beta版:使用 Unicode UTF-8 提供全球语言支持(U)”打勾,然后点击确定,确定;

若本文对你有帮助,还望点个赞,谢谢。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值