国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
VC中文件操作的幾種方式(1,2) - 筆記 - 白喬 - CSDN學(xué)生大本營(yíng) - Pow...

第6章  使用文件存取對(duì)象

文件可以用來(lái)存儲(chǔ)一張《清明上河圖》,一曲《春江花月夜》,當(dāng)然也可以存儲(chǔ)一部《紅樓夢(mèng)》,文件的內(nèi)容依賴于應(yīng)用程序來(lái)解釋。幾乎所有的操作系統(tǒng)都通過(guò)文件的界面允許用戶保存、管理數(shù)據(jù)。所以,我們理所當(dāng)然把文件當(dāng)做數(shù)據(jù)存取介質(zhì)的第一選擇。

6.1  文件操作的幾種方式

操作計(jì)算機(jī)的人都會(huì)接觸到文件,文件的操作通常包括文件的讀取、修改,有的時(shí)候我們還需要對(duì)文件進(jìn)行外部管理,包括文件復(fù)制、刪除及屬性設(shè)置等。

6.1.1  使用CRT函數(shù)std::fxxx()

文件操作可以采用C語(yǔ)言運(yùn)行時(shí)期庫(kù)來(lái)完成,CRT提供的fxxx()函數(shù)如表6-1所示。

6-1  CRT文件操作函數(shù)

函數(shù)

含義

fopen

打開(kāi)指定文件名的文件

fread

從文件中讀取指定長(zhǎng)度的數(shù)據(jù)

fwrite

向文件中寫入指定的數(shù)據(jù)

fclose

關(guān)閉文件

feof

判斷是否達(dá)到文件結(jié)尾

fgetc

從文本文件中讀取一個(gè)字符

fgets

從文本文件中讀取一個(gè)字符串

fputc

向文本文件中寫入一個(gè)字符

fputs

向文本文件中寫入一個(gè)字符串

當(dāng)我們打開(kāi)、創(chuàng)建一個(gè)文件時(shí),常常需要調(diào)用fopen()函數(shù),該函數(shù)的原型為:

  1. FILE *fopen(   
  2.    const char *filename,  
  3.    const char *mode   
  4. ); 

參數(shù)解釋

filename:指定文件的文件名,如test.out。

mode:指定文件的操作方式,如表6-2所示。

6-2  fopen文件操作方式

標(biāo)志

含義

r

讀模式,如果文件不存在則會(huì)失敗

w

寫模式,如果文件已存在則會(huì)清空其內(nèi)容

a

追加模式,寫入的內(nèi)容追加在原有內(nèi)容之后,

如果文件不存在則會(huì)自動(dòng)創(chuàng)建

r+

讀寫模式(文件必須存在)

w+

讀寫模式,如果文件已存在則會(huì)清空其內(nèi)容

a+

讀+追加模式

t

文本方式

b

二進(jìn)制方式

ccs=ENCODING

文件編碼方式,可指定ENCODING

UTF-8UTF-16LE、UNICODE

文件的操作方式可以是如上標(biāo)志的組合,如:r+b。當(dāng)采用"ccs=ENCODING"時(shí),我們需要在前面添加一個(gè)","作為分隔。如我們以讀寫方式、UNICODE編碼打開(kāi)某個(gè)文件:

  1. fopen("newfile.txt""rw, ccs=UNICODE"); 

如下羅列出使用CRT函數(shù)進(jìn)行文件操作的流程。

使用fopen()創(chuàng)建、打開(kāi)文件,返回一個(gè)文件指針FILE *;

以FILE *作為參數(shù),調(diào)用fread()、fwrite()等操作函數(shù)完成對(duì)文件的讀寫。fread()、fwrite()函數(shù)的原型為:

  1. size_t fread(   
  2.    void *buffer,  
  3.    size_t size,  
  4.    size_t count,  
  5.    FILE *stream   
  6. );  
  7.  
  8. size_t fwrite(  
  9.    const void *buffer,  
  10.    size_t size,  
  11.    size_t count,  
  12.    FILE *stream   
  13. ); 

調(diào)用fclose()關(guān)閉文件指針。

使用CRT操作文件流程如圖6-1所示。

 
(點(diǎn)擊查看大圖)圖6-1  使用CRT操作文件的步驟

6.1.2  使用標(biāo)準(zhǔn)C++庫(kù)std::fstream

標(biāo)準(zhǔn)C++操作文件主要是通過(guò)文件流fstream來(lái)完成的。文件輸入/輸出流用以實(shí)現(xiàn)文件讀取和存儲(chǔ)的操作,這種基于流的文件操作如圖6-2所示。

 
(點(diǎn)擊查看大圖)圖6-2  文件輸入/輸出流

和文件有關(guān)系的輸入/輸出類主要在頭文件<fstream>中被定義。在這個(gè)頭文件中主要定義了3個(gè)類。由這3個(gè)類控制對(duì)文件的各種輸入/輸出操作,它們分別是ifstream、ofstream、fstream。其中fstream類是由iostream類派生而來(lái)的,它們之間的繼承關(guān)系如圖6-3所示。

如果需要使用fstream,則需要包含<fstream>頭文件,與iostream不同的是,fstream需要和指定的文件名相關(guān)聯(lián),如:
 

  1. ofstream out("test.out");  
  2. out << "hello, world!"
 
(點(diǎn)擊查看大圖)圖6-3  fstream與iostream

除流操作符之外,fstream提供的文件操作函數(shù)如表6-3所示。

6-3  fstream文件操作函數(shù)

函數(shù)

含義

open

打開(kāi)文件

close

關(guān)閉文件

is_open

判斷當(dāng)前文件是否已打開(kāi)

其中,open()函數(shù)具有多個(gè)原型:
 

  1. void open(  
  2.     const char *_Filename,  
  3.     ios_base::openmode _Mode = ios_base::in | ios_base::out,  
  4.     int _Prot = (int)ios_base::_Openprot  
  5. );  
  6. void open(  
  7.     const char *_Filename,  
  8.     ios_base::openmode _Mode  
  9. );  
  10. void open(  
  11.     const wchar_t *_Filename,  
  12.     ios_base::openmode _Mode = ios_base::in | ios_base::out,  
  13.     int _Prot = (int)ios_base::_Openprot  
  14. );  
  15. void open(  
  16.     const wchar_t *_Filename,  
  17.     ios_base::openmode _Mode  
  18. ); 

參數(shù)ios_base::openmode用以指定文件的打開(kāi)方式,可以是如表6-4所示的標(biāo)志的組合。

6-4  ios_base::openmode標(biāo)志

標(biāo)志

含義

ios::app

追加模式(append),新輸出的內(nèi)容追加在原文件內(nèi)容的后面

ios::ate

文件打開(kāi)后定位到文件尾,ios:app就包含此屬性

ios::binary

以二進(jìn)制方式打開(kāi)文件,默認(rèn)的方式是文本方式

ios::in

文件以輸入方式打開(kāi)

ios::out

文件以輸出方式打開(kāi)

ios::trunc

截?cái)嗄J剑?/span>truncate),如果文件存在,則把文件長(zhǎng)度設(shè)為0

ios::nocreate

如果文件不存在則不創(chuàng)建

ios::noreplace

如果文件已存在則不替換

如下羅列出使用fstream類進(jìn)行文件操作的流程。

調(diào)用fstream::fopen()創(chuàng)建、打開(kāi)文件。

通過(guò)流操作,使用fstream完成輸入/輸出,如:out << "hello, world!"。

調(diào)用fstream::close()關(guān)閉文件。

====未完待續(xù)====

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C ++文件流操作
C &C++ 若干
C++入門到理解之文件操作(文本文件的讀寫+二進(jìn)制文件的讀寫)
C++方式的文件操作(1)
輸入輸出
cocos2dx 引擎學(xué)習(xí)心得
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服