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