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