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 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 ...