C ofstream和ifstream詳細用法

2021-10-23 14:02:15 字數 2981 閱讀 3667

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間

在c++中,有乙個stream這個類,所有的i/o都以這個「流」類為基礎的,包括我們要認識的檔案i/o.

stream這個類有兩個重要的運算子:

1、插入器(<<)

向流輸出資料。比如說系統有乙個預設的標準輸出流(cout),一般情況下就是指的顯示器,所以,cout<<「write stdout」<<』\n』;就表示把字串"write stdout"和換行字元(』\n』)輸出到標準輸出流。

2、析取器(>>)

從流中輸入資料。比如說系統有乙個預設的標準輸入流(cin),一般情況下就是指的鍵盤,所以,cin>>x;就表示從標準輸入流中讀取乙個指定型別的資料。

在c++中,對檔案的操作是通過stream的子類fstream(file stream)來實現的,所以,要用這種方式操作檔案,就必須加入標頭檔案fstream.h。

常見的檔案操作:

一、開啟檔案

在fstream類中,有乙個成員函式open(),就是用來開啟檔案的,其原型是:

void open(const char* filename,int mode,int access);

引數:filename:  要開啟的檔名

mode:    要開啟檔案的方式

access:   開啟檔案的屬性

可以用「或」把以上屬性連線起來,如ios::out|ios::binary

開啟檔案的屬性取值是:

0:普通檔案,開啟訪問

1:唯讀檔案

2:隱含檔案

4:系統檔案

可以用「或」或者「+」把以上屬性連線起來,如3或1|2就是以唯讀和隱含屬性開啟檔案。

例如:以二進位制輸入方式開啟檔案c:\config.sys

fstream file1;

file1.open(「c:\config.sys」,ios::binary|ios::in,0);

如果open函式只有檔名乙個引數,則是以讀/寫普通檔案開啟,即:

file1.open(「c:\config.sys」); <=> file1.open(「c:\config.sys」,ios::in|ios::out,0);

另外,fstream還有和open()一樣的建構函式,對於上例,在定義的時侯就可以開啟檔案了:

fstream file1(「c:\config.sys」);  

特別提出的是,fstream有兩個子類:

ifstream(input file stream)和ofstream(outpu file stream),

ifstream預設以輸入方式開啟檔案

ofstream預設以輸出方式開啟檔案。

ifstream file2(「c:\pdos.def」);//以輸入方式開啟檔案

ofstream file3(「c:\x.123」);//以輸出方式開啟檔案  

所以,在實際應用中,根據需要的不同,選擇不同的類來定義:

如果想以輸入方式開啟,就用ifstream來定義;

如果想以輸出方式開啟,就用ofstream來定義;

如果想以輸入/輸出方式來開啟,就用fstream來定義。

二、關閉檔案

開啟的檔案使用完成後一定要關閉,fstream提供了成員函式close()來完成此操作,

如:file1.close();

就把file1相連的檔案關閉。

三、讀寫檔案

輸入和輸出格式:

輸出到磁碟 ofsteam 識別字(「檔名」)

從磁碟讀檔案 ifsteam 識別字("檔名「)

例如:ofstream outfile(「data.txt」); //寫入到磁碟的data.txt中

格式化輸入輸出:

1 整數資料的輸入輸出

整數資料儲存再磁碟內,每個文字各佔乙個位元組。

例如:

#include

#include

#inlude

void

main()

程式執行後用記事本

開啟可以看到資料

0 1 2 3 4 5 6 7 8 9

同樣讀取檔案語句為:

int data;

ifstream infile

("data.txt");

for(

int i=

0;i<

10;i++

)

2 字元資料的的輸入

字元的輸出方式以put(ch)為存入語句,讀取語句為get(ch)

例如:char str=「hello this is a c++ programe!\n」

「i know this difference \n」

「and mocive」;

ofstream outfile (「data.txt」);

for(int i=0;ichar ch;

ifstream infile

("data.txt");

while

(infile)

getch()

;}3 字串資料的輸入

資料多的時候讀寫速度比較快,輸入時以整行字串加上換行符號一次寫入。讀取的時候以語句getline(buffer,max),來讀取整行資料,直到遇到換行符,每行結尾的\n並不讀入,所以在 輸出的時候需要加上換行符號,否則資料會連線在一起。

例子:ofstream outfile(「strdata.txt」);

outfile<<「use your vote\n」;

outfile<<「ouse your weise\n」;

讀取:const max=80;

char buffer[max];

ifstream infile(「strdata.txt」);

while(infile)

4 浮點數

浮點數因為有小數點,在儲存資料時與整數相同,只要每個資料加上乙個空格就可以區隔相鄰的資料

C ofstream和ifstream詳細用法

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間 在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 ...

C ofstream和ifstream詳細用法

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間 在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 ...

C ofstream和ifstream詳細用法

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間 在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 ...