C++文件操作与文件流
生活随笔
收集整理的這篇文章主要介紹了
C++文件操作与文件流
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文件的概念
1.1文件是程序設計中一個重要的概念,所謂“文件”,一般指存儲在外部介質(zhì)上數(shù)據(jù)的集合。 1.2外存文件包括磁盤文件,光盤文件,和U盤文件。 1.3對用戶來說常用的文件類型有兩大類,一類是程序文件,如C++的源程序文件(.cpp),目標文件(.obj),可執(zhí)行文件(.exe)。一類是數(shù)據(jù)文件,程序里面常常需要把一些數(shù)據(jù)存放起來,這種磁盤文件就是數(shù)據(jù)文件。程序中的輸入和輸出對象就是數(shù)據(jù)文件。 1.4根據(jù)文件中數(shù)據(jù)的組織形式,又分為ASCII文件和二進制文件。ASCII文件又稱文本文件,或字符文件,它的每一個字節(jié)存放一個ASCII代碼,代表一個字符。二進制文件又稱內(nèi)部格式文件或字節(jié)文件,是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。 1.5對于字符信息,在內(nèi)存中是以ASCII代碼形式存放的,因此,無論用ASCII文件輸出還是用二進制文件輸出,其數(shù)據(jù)形式是一樣的,但是對于數(shù)值型數(shù)據(jù),二者是不同的。如100000,ASCII形式因為一個字符占一個字節(jié)所以用了6個字節(jié),而二進制形式因為是長整形,占用了4個字節(jié)。 1.6ASCII形式便于閱讀,直觀,但是占用空間比較多,需要花時間轉(zhuǎn)換(二進制形式與ASCII的轉(zhuǎn)換),二進制形式與ASCII相反。文件流類與文件流對象
1.1文件流是以外存文件為輸入輸出對象的數(shù)據(jù)流。輸出文件流是從內(nèi)存流向外存文件的數(shù)據(jù),輸入文件流是從外存文件流入內(nèi)存的數(shù)據(jù)。每一個文件流都有一個內(nèi)存緩存區(qū)與其對立。 1.2文件流本身不是文件,而是以文件為輸入輸出對象的流,若要對磁盤文件輸入輸出,就必須通過文件流來實現(xiàn)。 1.3文件操作的3大類: A.ifstream類,由istream類派生過來。支持從磁盤文件的輸入。 B.ofstream類,由ostream類派生過來。支持向磁盤文件的輸出。 C.fstream類,由iostream類派生過來。支持磁盤文件的輸入輸出。文件的打開與關閉
1.1打開磁盤文件步驟: A.為文件流對象和指定的磁盤文件建立關聯(lián),以便使文件流流向指定的磁盤文件。 B.指定文件的工作方式,如,指定該文件是輸入文件還是輸出文件,是以ASCII形式還是以二進制形式。 1.2打開磁盤文件的方式: A;使用open函數(shù) ofstream outfile; //定義ofstream類對象outfile outfile.open("f1.dat",ios::out);//使文件流與f1.dat建立關聯(lián)指定其為輸出文件 B:使用構(gòu)造函數(shù) ofstream ("f1.dat",ios::out); 一般采用的是B方式。 1.3文件輸入輸出方式設置值 A.ios::in 以輸入方式打開文件 B.ios::out 以輸出方式打開文件(這是默認方式),如果已有此名字的文件,則將其原有內(nèi)容全部清除。 C.ios::app 以輸出方式打開文件,寫入的數(shù)據(jù)添加在文件末尾。 D.ios::ate 打開一個文件,文件指針指向末尾 E.ios::trunc 打開一個文件,文件存在則刪除全部數(shù)據(jù),文件不存在則新建一個文件。 F:ios::binary 以二進制方式打開一個文件, 默認為ASCII形式。 G:ios::nocreate 打開一個已有的文件,如果不存在則失敗。新版本的C++里面沒有。 H:ios::noreplace 如果文件不存在則新建文件,如果存在則失敗。新版本C++里面沒有。 I:ios::in|ios::out 以輸入和輸出的方式打開文件,文件可讀寫。 J:ios::out|ios::binary 以二進制的方式打開一個輸出文件。 K:ios::in|ios::binary 以二進制方式打開一個輸入文件 1.4每一個打開的文件都有一個文件的指針,該指針的初始位置由I/O確定,每次讀寫都從文件指針的當前位置開始。每讀入一個字節(jié),指針就后移一個字節(jié)。當文件指針移到最后,就會遇到文件結(jié)束符EOF(文件結(jié)束符也占一個字節(jié),其值為-1),此時流對象的成員函數(shù)eof的值為非0值(一般為1),表示文件結(jié)束了。 1.5可以用“位或”運算符進行輸入輸出方式的組合。 1.6如果打開操作失敗,open函數(shù)的返回值為0,如果調(diào)用構(gòu)造函數(shù)的方式打開文件,則流對象為0,據(jù)此測試打開是否成功。 1.7在對已打開的磁盤文件的讀寫操作完成后,應關閉該文件,關閉文件用成員函數(shù)close。 outfile.close(); 所謂關閉,實際上是解除該磁盤文件與文件流的關聯(lián),原來設置的工作方式也失效。這樣,就不能通過文件流與其他磁盤文件建立關聯(lián),通過文件流對新的文件進行輸入和輸出。總結(jié)
以上是生活随笔為你收集整理的C++文件操作与文件流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于android的交流平台,基于And
- 下一篇: Python数模笔记-Sklearn(2