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(空格)文件所在路徑」,回車
便可到達文件所在空間,從而使用文件。
通過測試,程序能夠實現以上兩種功能。學習
設計錯誤處理邏輯時,添加了判斷參數格式與判斷文件個數的功能,可是編譯會報錯,使用命令行時會出現
通過一番搜索仍是沒法解決,還在思考中。測試