Clickhtml
https://www.cnblogs.com/Allen-rg/p/6762437.html
https://blog.csdn.net/sxhelijian/article/details/46428701
两篇博客中包含了基础的基于C++的命令行参数的使用及原理解释,对于命令行参数这种技术型的小知识,因使用频率较少容易忘记,因此将我的认为有价值的博客附上,便于之后学习使用。ios
C++文件打开模式标记:git
#include<fstream>//头文件 int main() { ifstream infile("./input.txt"); ofstream outfile1("./output1.txt"); ofstream outfile2("./output2.txt"); ... ...//根据须要输出文件个数增减 infile>>... ...;//经过infile读入文件内容 infile.close(); outfile1>>... ...; outfile2>>... ...;//经过outfile写入文件 outfile1.close(); outfile2.close(); return 0; }
代码功能:读取input.txt中的内容,若目录中存在output.txt,则将输出写入output.txt中;若目录中不存在output.txt,则创建output.txt并将输出写入其中。github
为程序添加命令行参数,使程序可以接收命令行输入的参数有以下两种格式:
D:\>Elevators.exe D:\input.txt
D:\>Elevators.exe D:\input.txt D:\output1.txt D:\output2.txt D:\output3.txt
Elevators.exe是程序编译获得的可执行文件;input.txt是输入文件。在第一种格式中,程序会在输入文件input.txt的目录下建立三个输出文件,文件名分别为output1.txt、output2.txt和output3.txt并存放输出。
在第二种格式中,程序接受更多的命令行参数,从头到尾指定了输入文件的路径和三个输出文件的路径。
解决方法:保持程序基本功能不改变。使程序知足这两种功能,只须要判断接收的命令行参数个数,即argc的值。若为2,则执行第一种功能;为4,则执行第二种功能。添加代码以下:app
if (argc == 2) { ifstream infile(argv[1]); ofstream outfile1("./output1.txt"); ofstream outfile2("./output2.txt"); ofstream outfile3("./output3.txt"); } else { ifstream infile(argv[1]); ofstream outfile1(argv[2]); ofstream outfile2(argv[3]); ofstream outfile3(argv[4]); }//文件的关闭在读写完以后进行
输入“cd(空格)文件所在路径”,回车
便可到达文件所在空间,从而使用文件。
通过测试,程序能够实现以上两种功能。学习
设计错误处理逻辑时,添加了判断参数格式与判断文件个数的功能,可是编译会报错,使用命令行时会出现
通过一番搜索仍是没法解决,还在思考中。测试