2023年華科考了一道檔案操作題,所以在這裡補充一下相關知識。
檔案操作標頭檔案,可讀可寫,定義好標頭檔案好之後對檔案的操作需要開啟對應檔案。
fstream f;
f.open
("abc.cpp"
,ios::in)
;
上面是開啟檔案的一般流程,第一句是定義檔案指標,第二句的open第乙個引數是檔名,第二個引數是控制檔案的讀寫情況,此時成功即返回檔案指標,f就與abc.cpp檔案相對應了!
這裡的第二個引數常用的有以下4個:
對檔案操作重要的是輸入輸出,fstream由iostream引申而來,f可以代替cin和cout進行輸入輸出,即在我們正常的輸入輸出中,只要把cin或cout變成對應的檔案指標就可以對該檔案輸入輸出。
承接上面定義,下面**表示從f指向檔案中輸入一行
string s;
getline
(f,s)
輸入輸出解決了,還有乙個重點就是控制輸入輸出的位置通俗而言,檔案剛開啟會有乙個預設指向檔案開頭的指標,在這裡對檔案操作有檔案內指標會自動移動到下乙個位置,如果是上面對行操作會自動移動到下一行。
如果我們需要改變位置就用到seekg() 和seekp() 分布是改變輸入和輸出指標的位置,其有兩個引數,意義如下。
ios::beg 檔案頭
ios::end 檔案尾
ios::cur 當前位置
例子:file.seekg(0,ios::beg); //讓檔案指標定位到檔案開頭
file.seekg(0,ios::end); //讓檔案指標定位到檔案末尾
file.seekg(10,ios::cur); //讓檔案指標從當前位置向檔案末方向移動10個位元組
file.seekg(-10,ios::cur); //讓檔案指標從當前位置向檔案開始方向移動10個位元組
file.seekg(10,ios::beg); //讓檔案指標定位到離檔案開頭10個位元組的位置
最後一步就是一些判斷標誌,檔案是否開啟,檔案位置是否到了結尾等
is_open( ) 判斷檔案是否處於開啟的狀態。如果是,返回true;如果不是,返回false
eof() 判斷讀檔案是否到達檔案末尾。如果是,返回true;如果不是,返回false
例題:
2023年華科機試第二題
將第一題的源**儲存為abc.c檔案,並且要求abc.c檔案中有相當數量的注釋,包括//和/……/兩種形式的注釋
(1)讀取abc檔案的內容,將其顯示在控制台上,並為每行**增加乙個符號。(10)
(2)使源**中的//型別的注釋內容不顯示在控制台中。(10)
(3)使源**中的/……/型別的注釋內容不顯示在控制台中。(10)
#include
#include
#include
using
namespace std;
intmain()
//如果是行注釋
else
if(s[i+1]
=='*'
)break;}
}}cout<
"!"<
} f.
close()
;return0;
}
abc檔案
對應結果:
C 檔案操作與C 的檔案操作
c filestream 檔案流 主要用於使用二進位制方式讀寫檔案資料,可讀取任何檔案 建立filestream物件 e 建立filestream物件 filemode 指定系統開啟檔案的方式filestream fileaccess 指定檔案的訪問方式 read唯讀,write只寫,readwri...
C 檔案操作
c 追加檔案 sw.writeline 追逐理想 sw.writeline kzlll sw.writeline net筆記 sw.flush sw.close c 拷貝檔案 string orignfile,newfile file.copy orignfile,newfile,true c 刪除...
C 檔案操作
c 檔案操作 軒軒 發表於 2006 2 18 12 40 16 在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 cout 一般情況下就是指的顯示器...