目錄
1. 開啟檔案
2. 從檔案中讀資料
3. 以字串string的方式逐行讀寫檔案
4. 逐個字元讀入(忽略空格與回車)
5. 逐個字元讀入(包括空格與回車)
6.快取和同步(buffers and synchronization)
7. 參考
這裡主要討論fstream的內容
#include ofstream //檔案寫操作 記憶體寫入儲存裝置
ifstream //檔案讀操作,儲存裝置讀區到記憶體中
fstream //讀寫操作,對開啟的檔案可進行讀寫操作
public member function
void open ( const char * filename,
ios_base::openmode mode = ios_base::in | ios_base::out );
void open(const wchar_t *_filename,
ios_base::openmode mode= ios_base::in | ios_base::out,
引數: filename 操作檔名
mode 開啟檔案的方式
prot 開啟檔案的屬性 //基本很少用到,在檢視資料時,發現有兩種方式
開啟檔案的方式在ios類(所以流式i/o的基類)中定義,有如下幾種方式:
ios::in
為輸入(讀)而開啟檔案
ios::out
為輸出(寫)而開啟檔案
ios::ate
初始位置:檔案尾
所有輸出附加在檔案末尾
ios::trunc
如果檔案已存在則先刪除該檔案
ios::binary
二進位制方式
這些方式是能夠進行組合使用的,以「或」運算(「|」)的方式:例如
ofstream out;
out.open("hello.txt", ios::in|ios::out|ios::binary) //根據自己需要進行適當的選取
#include #include #include int main ()
while (!in.eof() )
return 0;
}//結果 在螢幕上輸出
this is a line.
this is another line
上面的例子讀入乙個文字檔案的內容,然後將它列印到螢幕上。注意我們使用了乙個新的成員函式叫做eof ,它是ifstream 從類 ios 中繼承過來的,當到達檔案末尾時返回true 。
狀態標誌符的驗證(verification of state flags)
除了eof()以外,還有一些驗證流的狀態的成員函式(所有都返回bool型返回值):
如果在讀寫過程**錯,返回 true 。例如:當我們要對乙個不是開啟為寫狀態的檔案進行寫入時,或者我們要寫入的裝置沒有剩餘空間的時候。
除了與bad() 同樣的情況下會返回 true 以外,加上格式錯誤時也返回true ,例如當想要讀入乙個整數,而獲得了乙個字母的時候。
如果讀檔案到達檔案末尾,返回true。
這是最通用的:如果呼叫以上任何乙個函式返回true 的話,此函式返回 false 。
要想重置以上成員函式所檢查的狀態標誌,你可以使用成員函式clear(),沒有引數。
ifstream infile;
infile.open(file.data()); //將檔案流物件與檔案連線起來
assert(infile.is_open()); //若失敗,則輸出錯誤訊息,並終止程式執行
//ifstream myfile("cleardata_voc2.txt");
string s;
while(getline(infile,s))
{ cout<> c;
cout<> noskipws;
while (!infile.eof())
{infile>>c;
cout<
當我們對檔案流進行操作的時候,它們與乙個streambuf 型別的快取(buffer)聯絡在一起。這個快取(buffer)實際是一塊記憶體空間,作為流(stream)和物理檔案的媒介。例如,對於乙個輸出流, 每次成員函式put (寫乙個單個字元)被呼叫,這個字元不是直接被寫入該輸出流所對應的物理檔案中的,而是首先被插入到該流的快取(buffer)中。
當快取被排放出來(flush)時,它裡面的所有資料或者被寫入物理媒質中(如果是乙個輸出流的話),或者簡單的被抹掉(如果是乙個輸入流的話)。這個過程稱為同步(synchronization),它會在以下任一情況下發生:
1. 2.
3.
檔案的讀寫
eg 文字中每一行的資料結構,它們是以tab鍵為間隔的 afghanistan baghlan 36.12 68.7 afghanistan balkh 36.758 66.896 include stdafx.h include fstream include using namespace st...
檔案的讀寫
為了讀而開啟檔案,要建立乙個ifstream物件,他的用發與cin相同,為了寫而開啟檔案,要建立乙個ofstream物件,用法與cout相同。一旦開啟乙個檔案,就可以像處理其他iostream物件那樣對它進行讀寫。在iosream庫中,乙個十分有用的函式是getline 用它可以讀入到string物...
檔案的讀寫
對於檔案的讀寫有各種形式,如位元組流讀寫,字元流讀寫,在字元流之上的緩衝流的讀寫,對於這幾種流的讀寫各有優點,各有不足吧 首先介紹一下位元組輸入輸出流 fileinputstream fiieoutputstream 對檔案的操作 將檔案aa.txt中的內容讀取出來放到bb.txt檔案中。首先以乙個...