C (四十七) 檔案輸入 輸出流

2022-07-13 05:03:12 字數 3243 閱讀 1248

1、檔案輸入、輸出流

由於檔案裝置並不像顯示器螢幕與鍵盤那樣是標準預設裝置,不能像cout那樣預先定義的全域性物件,所以我們必須自己定義乙個該類的物件。

ifstream類,它是從istream類派生的,用來支援從磁碟檔案的輸入。

ofstream類,它是從ostream類派生的,用來支援向磁碟檔案的輸出。

fstream類,它是從iostream類派生的,用來支援對磁碟檔案的輸入輸出。

檔案原理

檔案開啟都有乙個檔案指標,該指標的初始位置由i/o方式指定,每次讀寫都從檔案指標的當前位置開始。每讀入乙個位元組,指標就後移乙個位元組。當檔案指標移到最後,就會遇到檔案結束eof(檔案結束符也佔乙個位元組,其值為-1),此時流物件的成員函式eof的值為非0值(一般設為1),表示檔案結束 了

檔案關閉,實際上是解除該磁碟檔案與檔案流的關聯,原來設定的工作方式也失效,這樣,就不能再通過檔案流對該檔案進行輸入或輸出

檔案型別:1、ascii檔案:檔案的每乙個位元組中均以ascii**形式存放資料,即乙個位元組存放乙個字元,這個檔案就是ascii檔案(或稱字元檔案)。

2、開啟檔案的方式:

方式1:對檔案輸出流、檔案流物件,通過ofstream類的建構函式開啟檔案

格式: ofstream (磁碟檔名,輸入輸出方式);      

如果ofstream  為0(假),表示開啟操作失敗

如:   ofstream fout1(fname,ios::out);

輸入輸出方式可以使用能夠進行組合使用的,以「或」運算(「|」)的方式,如:fstream fout(fname,ios::out|ios::in)

方式2:對檔案的輸出和輸入流物件、檔案流物件,都可通過open函式開啟檔案

格式: 檔案流物件.open(磁碟檔名,輸入輸出方式);      

返回值:為0(假),開啟操作失敗

如:   fout.open(fname,ios::out)       

關閉檔案

在對已開啟的磁碟檔案的讀寫操作完成後,必須要關閉該檔案  如:  outfile.close( );

方式1:

#includeusing

namespace

std;

#include

void

main()

fin.close();

system(

"pause");

}

方式2:

ofstream out;             //

輸出流指標out

ifstream in; //

輸入流指標in

out.open("

file.txt

"); //

以輸出的方式開啟檔案 file.txt

wrtie_file(

out); //

write_file是使用者自己寫的乙個函式,用於操作 out指標指向的檔案

out.close(); //

操作完之後一定要關閉流指標。否則不能用 其他流指標開啟該檔案,如 輸入流指標

//不呼叫 close()函式,就無法使其他流指標或者說其他程序訪問這個檔案

in.open("

file.txt

"); //

以輸入的方式開啟檔案 file.txt

read_file(in); //

read_file是使用者自己寫的乙個函式,用於操作 in指標指向的檔案

in.close(); //

關閉輸入流指標

/*-----------再說一種方式-------------

*/如:

ofstream

out("

file.txt

"); 也是表示開啟file.txt,返回 out流指標,只不過他是隱式呼叫 open函式,因為ofstream類的建構函式中就有呼叫了open函式

同理:ifstream

in("

file.txt

"); 也是等價於 ifstream in; in.open("

file.txt

");

ofstream out;

3、判斷是否開啟成功和是否已經到檔案結尾

1)是否開啟成功

ofstream

out("

file.txt");

if(!out

.is_open) //

同理 ifstream in也是這樣判斷。(2

)是否到檔案結尾

ifstream

in("

file.txt");

while(!in

.eof)

4、獲取乙個文字檔案大小

#include#include

using

namespace

std;

void get_size(ifstream &in)

intmain()

5、獲得和設定流指標

ifstream 有乙個 get 指標,指向下乙個將要被讀取的元素

ofstream 有乙個 put指標,指向下乙個將要被寫入的位置

tellg()和tellp()分別用於返回get指標,put指標的位置,並不需要輸入引數

seekg()和seekp() 分別用於設定 get指標和 put指標的位置,乙個兩個引數,第乙個為,位移量,第二個為 位置。

seekg(0,ios::beg);//設定get指標的位置為,從檔案開頭開始位置0個位置 的地方

C 檔案輸入輸出流

dat 檔案 資料檔案 二進位制檔案字尾名為 bin 文字檔案 字尾名 txt doc.docx wps 以ascii 碼儲存資料的 檔案指標,用於指明其位置 檔案開關 fopen 第二個引數char 型別 需要 括起來 err fopen s fp1,file information.txt a ...

C 檔案輸入輸出流

寫在前面的話 c 中對檔案的操作跟c語言是有很大差別的,因此總結一下c 對檔案的操作。在c 中隊檔案的輸入輸出流和對記憶體的輸入輸出流以及對字串的輸入輸出流介面是一致的,如果輸入流能產生位元組,可以用乙個提取操作符從這個流中獲取資訊。這個提取符產生並格式化目的物件所期望的資訊型別。雖然輸入流用起來很...

檔案輸入輸出流

學習內容 1.fileinputstream類 常用構造方法 fileinputstream string name 使用檔名建立fileinputstream物件 fileinputstream file file 使用file物件建立fileinputstream物件 2.fileonputst...