面向對象程序設計 作業四


GitHub

Click

參考資料

https://www.cnblogs.com/Allen-rg/p/6762437.html
https://blog.csdn.net/sxhelijian/article/details/46428701
兩篇博客中包含了基礎的基於C++的命令行參數的使用及原理解釋,對於命令行參數這種技術型的小知識,因使用頻率較少容易忘記,所以將個人認為有價值的博客附上,便於以后學習使用。

文件讀寫、文件路徑小結

C++文件打開模式標記:

  • ios::in 以只讀方式打開文件
  • ios::out 以只寫方式打開文件
  • ios::app 以追加(寫)方式打開文件
  • ios::_Nocreate 不建立文件,所以文件不存在時打開失敗
  • ios::_Noreplace 不覆蓋文件,所以打開文件時如果文件存在失敗
  • ios::binary 以二進制方式打開文件
    一般常用前三種,可根據需要進行選擇。
    C++的文件讀寫是比較方便的,有其完善的一套模板,同樣也有多種讀寫方法,這里寫出我最習慣用的文件讀寫模板:
#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並將輸出寫入其中。

命令行參數的學習

1)最簡單的命令行參數

為程序添加命令行參數,使程序能夠接收命令行輸入的參數有如下兩種格式:
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,則執行第二種功能。添加代碼如下:

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]);
	}//文件的關閉在讀寫完之后進行

2)使用cmd運行

  • 輸入要到達的盤如“F:”,回車
  • 輸入“cd(空格)文件所在路徑”,回車
    即可到達文件所在空間,從而使用文件。

    經過測試,程序可以實現以上兩種功能。

3)遇到的問題

設計錯誤處理邏輯時,添加了判斷參數格式與判斷文件個數的功能,但是編譯會報錯,使用命令行時會出現

經過一番搜索還是無法解決,還在思考中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM