題目:
請開啟in檔,並讀取每一行文字,並在文字前加上這一行的長度,然後寫到out檔,重複以上動作直到讀不到任何正文字為止
輸入 (讀取檔案: in,內容為n行英文且一定要跳行),例如
檔名:in
Aabbc
Apple123
輸出 (寫入檔案: out,在文字前加上這一行的長度),例如
檔名:out
5Aabbc
8Apple123
一行長度不會超過70,並運用 strlen函數。
解法
1 | #include<iostream> |
解釋與詳細介紹
第一部分:fstream介紹
fstream標頭檔裡包含了ifstream(檔案寫入)和ofstream(檔案寫出),他是以檔案層級進行寫入寫出(類似cin/cout的輸入輸出,但是以檔案的方式進行)。在使用上,需要先#include
1 | ifstream in; |
再來是檔案開啟的部分
第二部分:主功能解析
在標頭檔的部分
1 | #include<iostream> |
除了iostream的部分,我們多引入了fstream(ifstream/ofstream)和cstring(因為需要用到計算字數的函式,strlen())
而主要程式區塊內
1 | int main() |
我們先定義了檔案讀取為”inStream”寫入為”outStream”(可自己命名),並開啟檔案”in”,這是我們會先放在跟程式檔同層級資料夾的txt檔案。程式部分運用inStream.open(“已存在欲讀取檔案名”)的方式讀取檔案(這裡是in檔),並用outStream.open(“未存在欲寫入檔案名”)的方式先創建一個欲寫入的檔案與欲為其命名名稱(這裡是out檔)。
再來先創建一個大小為70的字串陣列(應題目要求一行不超過七十字),並用while迴圈的方式(會不斷執行小括號內的條件直到結束),先用length變數存取該行的字數,也就是用strlen(欲計算的字串)計算每一行的字串數量值。再用outStream的方式寫入out檔內,先寫入的會在檔案內較前面的位置(較左)。
最後再將有用到的inStream()與outStream()以.close()的方式結束就可以了!
第三部分:成果展示
同層級資料夾內的in.txt:
當程式執行完後自動出現的out.txt:
紅色圈中可以看到檔案成功生成,在字串部分也有在最前端顯示出每行字數數值!
用程式的方式創建與寫入檔案是不是十分新奇呢?那我們明天見!