io相關類繼承關係
ifstream
是用來操作檔案的輸入流類。檔案流通過建構函式或者通過呼叫open
函式來完成與檔案的繫結。
開啟檔案
通過建構函式
std::ifstream ifs ("test.txt", std::ifstream::in);
通過open()函式
std::ifstream ifs;
ifs.open("test.txt",std::ifstream::in);
乙個乙個字元讀取std::istream::get
可以乙個乙個讀取並返回讀取到的值,或者讀取連續(n-1)個字元並儲存在字元陣列中。這種讀取方式不怎麼適用。
void getbychar()
ifs.close();
}
一行一行讀取
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
一次讀取一行,從流中讀取字元並將其儲存於c字串中,知道遇到界定符delim
(』\n』)或者已經向s寫入了n個字元。
需要注意的是n要大於檔案中最長的一行的字元數。如果此函式因為已經讀取了n個字元而停止但是卻沒有找到界定符,那麼failbit
將會被設定。
void getbyline()
}
>>
操作符就和我們常用的cin>>
一樣的用法
void getlikecin()
ifs.close();
}
如果你執行了上面這個程式,你會發現,最後乙個字串會被輸出兩次!這是因為ifs
完成最後一次讀取後不會立即設定eof
狀態,所以程式會再進行一輪迴圈,在這輪迴圈ifs
才會設定eof
狀態。結果就是最後一次讀取的內容被輸出了兩次。
while迴圈可改為:
while(ifs>>str)
或者
while(ifs.good())
c語言型別的檔案讀寫,只需#include
即可。
開啟檔案
file * fopen ( const char * filename, const char * mode );
mode 可取
mode
description
「r」讀:開啟乙個檔案進行讀取操作。檔案必須已經存在
「w」寫:建立乙個空檔案進行寫操作。若同名檔案已經存在,則會清空原檔案的內容。
「a」附加:開啟乙個檔案,在檔案末尾進行寫操作。若檔案不存在,則會建立新檔案。
「+」更新:需要和上述r/w/a進行結合,結合後檔案將會變成即可讀也可寫。
「b」二進位制讀寫:需要和上述模式進行結合成」rb」,」wb」,」ab」
「x」避免重寫已有檔案:新c標準但不是c++的一部分,通過和」w」結合成」wx」,」wbx」等,若同名檔案已存在,則會迫使此函式失敗。
file *pfile;
pfile = fopen("test.txt","r");
讀取檔案int fscanf ( file * stream, const char * format, ... );
根據format宣告的格式從stram中讀取資料並儲存在後面的引數中。這種讀取適用於檔案格式固定,每個字段型別確定的情況下進行讀取操作。
#include
int main ()
C 通過Read函式讀取檔案
通過read函式將檔案中的資料按照一定的長度讀取出來並且存放在新的陣列中。函式原型istream read char s,streamsize n 用來暫存內容的陣列 必須是char 型 以及流的長度比如我們要讀取txt檔案中的內容ifstream in test.txt 先通過檔案流將流與txt檔...
C C 讀取檔案總結
c方式 include define f path d myfile file.dat char c intmain c 逐行讀取文字 ifstream file file.open strpath,ios in if file.is open return string strline while...
TIFF檔案讀取總結
去年工作中,有用到tiff影象處理。開始的時候直接用qt的qimage進行影象載入。然後發現大的tiff影象用這個載入不進去。尋找原因,是由於tiff影象分為標準tiff和big tiff兩種格式,而qt的qimage只支援標準的格式。然後,用gdal庫支援big tiff格式讀取。然後發現在tif...