頭文件fstream包含了ifstream、ofstream、fstream三個(gè)類(lèi),可以通過(guò)定義這三個(gè)類(lèi)的對(duì)象來(lái)實(shí)現(xiàn)相對(duì)應(yīng)的文件操作。
創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、做網(wǎng)站與策劃設(shè)計(jì),望城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:望城等地區(qū)。望城做網(wǎng)站價(jià)格咨詢:18980820575#includeofstream //文件寫(xiě)操作,內(nèi)存寫(xiě)入存儲(chǔ)設(shè)備
ifstream //文件讀操作,存儲(chǔ)設(shè)備讀取到內(nèi)存中
fstream //讀寫(xiě)操作,對(duì)打開(kāi)的文件可進(jìn)行讀寫(xiě)操作
1.打開(kāi)文件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,
int prot = ios_base::_Openprot);
參數(shù) | filename | mode | prot |
---|---|---|---|
含義 | 操作文件名 | 打開(kāi)文件方式 | 打開(kāi)文件屬性(應(yīng)用少) |
ios::in | 為輸入(讀)而打開(kāi)文件 |
---|---|
ios::out | 為輸出(寫(xiě))而打開(kāi)文件 |
ios::ate | 初始位置:文件尾 |
ios::app | 所有輸出附加在文件末尾 |
ios::trunc | 如果文件已存在先刪除文件 |
ios::binary | 二進(jìn)制方式 |
ofstream outfile;
outfile.open("Hello.txt",ios::in|ios::out|ios::binary)
0 | 普通文件,打開(kāi)文件 |
---|---|
1 | 只讀文件 |
2 | 隱含文件 |
3 | 系統(tǒng)文件 |
對(duì)于文件的屬性也可以利用“|”和“+”進(jìn)行組合使用
ofstream out("\\\",ios::out);
ifstream in("\\\",ios::in);
fstream fil("\\\",ios::in|ios::out);
當(dāng)使用默認(rèn)的方式對(duì)文件進(jìn)行打開(kāi)時(shí),可以使用成員函數(shù)is_open()對(duì)文件進(jìn)行是否已打開(kāi)的驗(yàn)證。
2.關(guān)閉文件文本文件的讀寫(xiě)可以如同類(lèi)與控制臺(tái)交互一樣利用"<<”和">>"分別進(jìn)行寫(xiě)和讀,如:
#includeint main()
{
ofstream file("out.txt");
if(file.is_open())
{
file<<"This is a test"<
#include#includeusing namespace std;
int main()
{
char buff[256];
ifstream infile("in.txt");
if(!infile.is_open())
cout<<"Error open"<
狀態(tài)標(biāo)志符的驗(yàn)證
有一些驗(yàn)證流的狀態(tài)的成員函數(shù)(所有都返回bool型返回值):
獲得和設(shè)置流指針
所有輸入/輸出流對(duì)象都有至少一個(gè)流指針:
可以使用以下成員函數(shù)來(lái)讀取或配置流指針:
seekg(pos_type position);
seekp(pos_type position);
使用這個(gè)原型,流指針被改變?yōu)橹赶驈奈募_(kāi)始計(jì)算的一個(gè)絕對(duì)位置。要求傳入的參數(shù)類(lèi)型與函數(shù) tellg 和tellp 的返回值類(lèi)型相同。
seekg ( off_type offset, seekdir direction );
seekp ( off_type offset, seekdir direction );
使用這個(gè)原型可以指定由參數(shù)direction決定的一個(gè)具體的指針開(kāi)始計(jì)算的一個(gè)位移(offset)。它可以是:
ios::beg | 從流開(kāi)始位置計(jì)算的位移 |
---|---|
ios::cur | 從流指針當(dāng)前位置開(kāi)始計(jì)算的位移 |
ios::end | 從流末尾處開(kāi)始計(jì)算的位移 |
流指針 get 和 put 的值對(duì)文本文件(text file)和二進(jìn)制文件(binary file)的計(jì)算方法都是不同的,因?yàn)槲谋灸J降奈募心承┨厥庾址赡鼙恍薷摹S捎谶@個(gè)原因,建議對(duì)以文本文件模式打開(kāi)的文件總是使用seekg 和 seekp的第一種原型,而且不要對(duì)tellg 或 tellp 的返回值進(jìn)行修改。對(duì)二進(jìn)制文件,你可以任意使用這些函數(shù),應(yīng)該不會(huì)有任何意外的行為產(chǎn)生。
// obtaining file size
#include#includeconst char * filename = "test.txt";
int main () {
long l,m;
ifstream in(filename, ios::in|ios::binary);
l = in.tellg();
in.seekg (0, ios::end);
m = in.tellg();
in.close();
cout<< "size of "<< filename;
cout<< " is "<< (m-l)<< " bytes.\n";
return 0;
} //`獲取二進(jìn)制文件的大小
4.二進(jìn)制文件在二進(jìn)制文件中,使用<< 和>>,以及函數(shù)(如getline)來(lái)操作符輸入和輸出數(shù)據(jù),沒(méi)有什么實(shí)際意義,雖然它們是符合語(yǔ)法的。
文件流包括兩個(gè)為順序讀寫(xiě)數(shù)據(jù)特殊設(shè)計(jì)的成員函數(shù):write 和 read。第一個(gè)函數(shù) (write) 是ostream 的一個(gè)成員函數(shù),都是被ofstream所繼承。而read 是istream 的一個(gè)成員函數(shù),被ifstream 所繼承。類(lèi) fstream 的對(duì)象同時(shí)擁有這兩個(gè)函數(shù)。它們的原型是:
write ( char * buffer, streamsize size );
read ( char * buffer, streamsize size );
這里 buffer 是一塊內(nèi)存的地址,用來(lái)存儲(chǔ)或讀出數(shù)據(jù)。參數(shù)size 是一個(gè)整數(shù)值,表示要從緩存(buffer)中讀出或?qū)懭氲淖址麛?shù)。
// reading binary file
#include#includeconst char * filename = "test.txt";
int main () {
char * buffer;
long size;
ifstream in (filename, ios::in|ios::binary|ios::ate);
size = in.tellg();
in.seekg (0, ios::beg);
buffer = new char [size];
in.read (buffer, size);
in.close();
cout<< "the complete file is in a buffer";
delete[] buffer;
return 0;
}
//運(yùn)行結(jié)果:
The complete file is in a buffer
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
新聞標(biāo)題:C++中fstream-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)網(wǎng)址:http://www.muchs.cn/article16/dhjddg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、軟件開(kāi)發(fā)、Google、域名注冊(cè)、網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容