題目回顧
讀取轉換映射檔(每行 key value)與輸入文字檔,將輸入檔中出現的單詞依映射表替換,其餘保持不變,輸出轉換後的內容。命令列參數依序為映射檔與輸入檔路徑。
核心程式碼
#include
#include
#include
關鍵知識點解析
1. main 函數參數 argc、argv
argc:命令列參數個數(含程式名稱)。
argv:字串陣列,argv[0] 為程式路徑,argv[1]、argv[2] 為使用者傳入的兩個檔案路徑。
- 參數名稱可自訂(如
arc、arv),不影響功能。
2. 檔案開啟輔助函式 open_file
封裝 ifstream::open 與 clear(),便於重複使用同一串流物件開啟不同檔案。
3. map 查找與 istringstream 分詞
- 使用
map::find 判斷單詞是否在映射表中,若在則替換。
istringstream 將整行字串按空白分割為單詞,處理自然換行與多重空白。
4. 輸出格式控制
firstword 旗標確保單詞間僅有一空格,行首無空格,行尾換行。
總結
此練習綜合運用:命令列參數處理、檔案 I/O、關聯容器、字串串流分詞、異常處理,是鞏固 C++ 標準庫實戰能力的優質範例。