簡單的檔案i/o:
要完成以上任務,首先應該包含標頭檔案fstream,對於大多數的實現來說,包含該檔案便自動包括iostream檔案,因此不必顯示包含iostream,然後宣告乙個ofstream物件:
ofstream fout; //create an ofstream object named fout
接下來,必須將這個物件與特定的檔案關聯起來。為此,可以使用open()方法。例如,假設要開啟檔案jar.txt進行輸出,則可以這樣做:
fout.
open
("jar.txt");
//associate fout with jar.txt
可以使用建構函式將這兩步(建立物件並關聯到檔案)合併成同一條語句:
ofstream fout
("jar.txt"
)
然後,以使用cout的方式使用fout(或選擇其他名稱),例如,要將dull data放到檔案中,可以這樣做:
fout <<
"dull data"
;
以這種方式開啟檔案來進行輸出時,如果沒有這樣的檔案,將建立乙個新的檔案:如果有這樣的檔案,則開啟檔案將檔案清空,輸出將進入到乙個空檔案中。下面會介紹如何開啟已有的檔案,並保留其中的資料。
警告:以預設模式開啟檔案進行輸出將自動把檔案的長度截短為零,這相當於刪除已有的內容。
上述讀檔案的步驟類似於寫檔案。 首先,當然要包含標頭檔案 fstream,然後宣告乙個ifstream物件,將它與檔名關聯起來。 可以使用一兩條語句來完成這項工作:
//兩條語句:
ifstream fin;
fin.
open
("jellyjar.txt");
//一條語句:
ifstream fis
("jellyjar.txt"
);
現在,可以像使用cin那樣使用fin或者fis,例如,可以這樣做:
char ch;
fin >> ch;
//從檔案裡面讀乙個字元
char buff[80]
; fin >> buff;
//從檔案裡面讀乙個字串
fin.
getling
(buf,80)
;//從檔案裡面讀一行
string line;
getline
(fin, line)
;//從檔案fin讀到string字串line
fout.
close()
;fin.
close()
;
#include
#include
using
namespace std;
intmain()
//讀 string s;
fi >> s;
//寫 fi <<
"welcome"
<< endl;
//關閉
cout << s << endl;
return0;
}
驗證流的狀態的成員函式(所有都返回bool型返回值):可以通過使用以下成員函式來讀出或配置這些指向流中讀寫位置的流指標:tellg() 和 tellp()
這兩個成員函式不用傳入引數,返回pos_type 型別的值(根據ansi-c++ 標準) ,就是乙個整數,代表當前get 流指標的位置 (用tellg) 或 put 流指標的位置(用tellp).
seekg() 和seekp()
這對函式分別用來改變流指標get 和put的位置。兩個函式都被過載為兩種不同的原型:
seekg ( pos_type position );
seekp ( pos_type position );
使用這個原型,流指標被改變為指向從檔案開始計算的乙個絕對位置。要求傳入的引數型別與函式 tellg 和tellp 的返回值型別相同。
seekg ( off_type offset, seekdir direction );
seekp ( off_type offset, seekdir direction );
使用這個原型可以指定由引數direction決定的乙個具體的指標開始計算的乙個位移(offset)。它可以是:
以下例子使用這些函式來獲得乙個二進位制檔案的大小:
obtaining file size
#include
#include
const
char
* filename =
"test.txt"
;int main (
)//結果:
size of example.txt is 40 bytes.
檔案拷貝:
#include
#include
#include
#include
using
namespace std;
intmain
(int argc ,
char
*ar**)
ifstream fi
(ar**[1]
, ios::in);if
(!fi)
ofstream fo
(ar**[2]
, ios::out | ios::trunc)
;//方法一
/* char temp;
fi.seekg(0 , ios::end);
int file_size = fi.tellg();
fi.seekg(0 , ios::beg);
while(file_size--)
*//* //方法二
char buf[1024];
while(!fi.eof())
fo << buf << endl;}*/
//方法三
char buf[
1024];
while
(!fi.
eof())
fi.clear()
; fi.
close()
; fo.
close()
;return0;
}
C 檔案操作與C 的檔案操作
c filestream 檔案流 主要用於使用二進位制方式讀寫檔案資料,可讀取任何檔案 建立filestream物件 e 建立filestream物件 filemode 指定系統開啟檔案的方式filestream fileaccess 指定檔案的訪問方式 read唯讀,write只寫,readwri...
C 檔案操作
c 追加檔案 sw.writeline 追逐理想 sw.writeline kzlll sw.writeline net筆記 sw.flush sw.close c 拷貝檔案 string orignfile,newfile file.copy orignfile,newfile,true c 刪除...
C 檔案操作
c 檔案操作 軒軒 發表於 2006 2 18 12 40 16 在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 cout 一般情況下就是指的顯示器...