版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)習(xí)目標(biāo) 理解函數(shù)模板、類模板的概念 掌握函數(shù)模板和類模板的區(qū)別及引用 了解異常的基本概念 掌握異常處理方法10.1 C+文件的基本知識(shí)什么是模板?為什么要使用模板?編寫程序時(shí),經(jīng)常遇到這樣的情況:若干程序單元(如函數(shù)或者類定義)中除了所處理的數(shù)據(jù)類型不同,程序代碼是一樣的。例如交換兩個(gè)變量的值,考慮到需要處理不同的數(shù)據(jù)類型,所以一般采用重載技術(shù)。10.1 C+文件的基本知識(shí)10.1.1 標(biāo)準(zhǔn)輸入和輸出從操作系統(tǒng)的角度看,每一個(gè)與主機(jī)相連的輸入輸出設(shè)備都被看做一個(gè)文件。程序的輸入指的是從輸入文件將數(shù)據(jù)傳送給程序,程序的輸出指的是從程序?qū)?shù)據(jù)傳送給輸出文件。C+的輸入與輸出主要包括以下的內(nèi)容:
2、對(duì)系統(tǒng)指定的標(biāo)準(zhǔn)設(shè)備的輸入和輸出; 以外存磁盤文件為對(duì)象進(jìn)行輸入和輸出; 對(duì)內(nèi)存指定的空間進(jìn)行輸入和輸出。輸入和輸出是數(shù)據(jù)傳送的過程,數(shù)據(jù)如流水一樣從一處流向另一處。C+形象地將此過程稱為流(stream)。10.1 C+文件的基本知識(shí)10.1.1 標(biāo)準(zhǔn)輸入和輸出C+對(duì)文件的操作是通過文件流類來實(shí)現(xiàn)的,為了使用這些文件流類,需要用#include預(yù)編譯指令將fstream.h文件包含進(jìn)來。文件流按其用途不同可分為3種:輸入流、輸出流和輸入輸出流。要在程序中使用它們,必須定義相應(yīng)的對(duì)象。10.1 C+文件的基本知識(shí)10.1.1 標(biāo)準(zhǔn)輸入和輸出表10-1 I/O流類10.1 C+文件的基本知識(shí)10
3、.1.2 文本流、二進(jìn)制流和數(shù)據(jù)文件數(shù)據(jù)文件在磁盤上有兩種存儲(chǔ)方式,一種是按ASCII碼存儲(chǔ),稱為ASCII碼文件;一種是按二進(jìn)制碼存儲(chǔ),稱為二進(jìn)制文件。文本文件:也稱ASCII碼文件。這種文件在保存時(shí),每個(gè)字符對(duì)應(yīng)一個(gè)字節(jié),用于存儲(chǔ)對(duì)應(yīng)的ASCII碼。 二進(jìn)制文件:不是保存ASCII碼,而是按二進(jìn)制的編碼方式來保存文件內(nèi)容。10.1 C+文件的基本知識(shí)10.1.3 文件的處理方式C+語(yǔ)言沒有提供對(duì)文件進(jìn)行操作的語(yǔ)句,所有的文件操作都是利用C+語(yǔ)言編譯系統(tǒng)所提供的庫(kù)函數(shù)來實(shí)現(xiàn)。多數(shù)C+語(yǔ)言編譯系統(tǒng)都提供兩種文件處理方式,即“緩沖文件系統(tǒng)”和“非緩沖文件系統(tǒng)”。(1) 緩沖文件系統(tǒng)又稱為標(biāo)準(zhǔn)文件
4、系統(tǒng)或高層文件系統(tǒng),是目前常用的文件系統(tǒng)。在對(duì)文件進(jìn)行操作時(shí),系統(tǒng)自動(dòng)地為每個(gè)文件在內(nèi)存開辟一個(gè)緩沖區(qū)。10.2 文件的打開和關(guān)閉10.2.1 文件的打開1. 使用成員函數(shù)open()打開文件函數(shù)open()是ifstream、ofstream和fstream流類的成員方法,其函數(shù)原型為:void open(const char *filename,int mode,int prot=filebuf:openprot);說明(1) 第一個(gè)形參filename是要打開的文件名,可以帶絕對(duì)路徑。(2) 第二個(gè)形參mode是文件打開模式,由一些流基類ios類的成員說明,取值及含義如表10-2所示。(
5、3) 第三個(gè)形參prot是文件打開時(shí)的保戶方式,其默認(rèn)值是filebuf:openprot,表示“可共享的”,即該文件可同時(shí)被多個(gè)文件流對(duì)象打開。10.2 文件的打開和關(guān)閉10.2.1 文件的打開1. 使用成員函數(shù)open()打開文件例如,常用的文件打開方式有:ios:in/以讀方式打開文本文件ios:in|ios:out/以讀/寫方式打開文本文件ios:in|ios:binary/以讀方式打開二進(jìn)制文件ios:in|ios:nocreate /以讀方式打開文本文件,若文件不存在,則打開失敗ios:in|ios:binary|ios:nocreate/以讀方式打開二進(jìn)制文件,若文件不存在,則打
6、開失敗ios:out /以寫方式打開文本文件ios:out|ios:binary /以寫方式打開二進(jìn)制文件ios:out|ios:app /以追加方式打開文本文件ios:out|ios:app|ios:binary /以追加方式打開二進(jìn)制文件ios:out|ios:noreplace /以寫方式打開文本文件,若文件存在,則打開失敗ios:out|ios:binary|ios:noreplace/以寫方式打開二進(jìn)制文件,若文件存在,則打開失敗10.2 文件的打開和關(guān)閉10.2.1 文件的打開1. 使用成員函數(shù)open()打開文件表10-2 文件打開模式mode的取值10.2 文件的打開和關(guān)閉10
7、.2.1 文件的打開2使用構(gòu)造函數(shù)打開文件除了用open()函數(shù)進(jìn)行打開文件外,還可以用三個(gè)文件流類ifstream、ofstream和fstream的構(gòu)造函數(shù)在定義對(duì)象的同時(shí)打開指定文件。ifstream:ifstream(const char *filename,int Mode=ios:in,int Prot=filebuf:openprot);ofstream:ifstream(const char *filename,int Mode=ios:in,int Prot=filebuf:openprot);fstream:ifstream(const char *filename,int
8、 Mode=ios:in,int Prot=filebuf:openprot);其中,各參數(shù)的含義同成員函數(shù)open()中的參數(shù)。10.2 文件的打開和關(guān)閉10.2.2 文件關(guān)閉使用完一個(gè)文件后,應(yīng)使用close()函數(shù)及時(shí)關(guān)閉。close()函數(shù)和open()函數(shù)一樣,也是文件流類的方法。ofstream outfile(a1.dat,ios:binary);/打開文件 /其它文件處理語(yǔ)句outfile.close(); /關(guān)閉文件10.3 文件的讀寫10.3.1 使用流運(yùn)算符讀寫文件由于流插入運(yùn)算符“”都已經(jīng)在iostream中重載為能用于ostream和istream類對(duì)象的輸入和輸出,
9、而ofstream和ifstream分別是ostream和istream類的派生類,所以利用“”可實(shí)現(xiàn)對(duì)磁盤文件的讀寫。整數(shù)文件的輸入和輸出 字符串文件的輸入和輸出 10.3 文件的讀寫10.3.2 使用流的成員函數(shù)讀寫文件istream流類定義了一些成員函數(shù),用來實(shí)現(xiàn)輸入的基本功能。而ostream流類定義了一些成員函數(shù),用來實(shí)現(xiàn)輸出的基本功能。1常用的輸入流成員函數(shù) get() /返回讀取的一個(gè)字符 get(char ch) /讀取的一個(gè)字符存儲(chǔ)在ch中 getline(char *str,int n, char ch); /讀取n-1個(gè)字符或遇到終止字符ch read(char *add
10、r, int size) /讀入size個(gè)字節(jié),存儲(chǔ)在首地址addr的空間2常用的輸出流成員函數(shù) put(char ch) /將ch中的字符寫入到輸出流中 write(char *addr, int size); /將內(nèi)存中的一塊內(nèi)容寫到輸出流中10.3 文件的讀寫10.3.3 二進(jìn)制文件的讀寫二進(jìn)制文件不同于文本文件,它可以處理各種類型的文件(包含文本文件)。二進(jìn)制文件的讀寫操作不需要做類似于文本文件的轉(zhuǎn)換,而直接是內(nèi)存和文件之間的一一映射。通常使用read()和write()成員函數(shù)來處理二進(jìn)制文件。1寫數(shù)據(jù)塊成員函數(shù)write() Write()函數(shù)的一般形式如下:write(cost
11、chr *buffer , int size);功能:將一組數(shù)據(jù)輸出到指定的磁盤文件中。說明(1)buffe用于存放輸出數(shù)據(jù)的緩沖區(qū)指針,即要寫出數(shù)據(jù)段的起始地址。(2)size是輸出的字節(jié)數(shù)。10.3 文件的讀寫10.3.3 二進(jìn)制文件的讀寫2讀數(shù)據(jù)塊成員函數(shù)read()read()函數(shù)的一般形式如下:read(char *buffer,int size);功能:從指定的文件中讀入一組數(shù)據(jù)。說明(1)buffer用于存放讀入數(shù)據(jù)的緩沖區(qū)指針,即是存放數(shù)據(jù)的起始地址。(2)size是讀入的字節(jié)數(shù)。10.4 文件的隨機(jī)讀寫表10-3 文件流指針相關(guān)的成員函數(shù)10.5 情景應(yīng)用訓(xùn)練項(xiàng)目10.5.1
12、 項(xiàng)目1:C+源文件的編譯預(yù)處理 【問題描述】編寫程序完成一種編譯預(yù)處理工作。將一個(gè).cpp源程序文件中的注釋語(yǔ)句刪除。注釋語(yǔ)句有兩種形式:第一種為每行的“/”后面的內(nèi)容為注釋,第二種為在“/*”和“*/”之間的內(nèi)容是注釋。10.5 情景應(yīng)用訓(xùn)練項(xiàng)目10.5.1 項(xiàng)目1:C+源文件的編譯預(yù)處理 【算法設(shè)計(jì)】將程序文件a.cpp看成字符流,讀寫位置指針從字符流中掃過,舍棄注釋,將其他的字符寫入b.cpp。讀寫位置指針有兩種狀態(tài),當(dāng)指針在正常語(yǔ)句位置時(shí),為狀態(tài)1;當(dāng)指針在“/*”和“*/”之間時(shí),為狀態(tài)2。初始時(shí),設(shè)定為狀態(tài)1。循環(huán)讀入字符,若讀入不成功,退出循環(huán);若讀入成功則做如下工作:(1) 若當(dāng)前為狀態(tài)1,則1)若當(dāng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 濟(jì)南2025年山東濟(jì)南高新區(qū)教育系統(tǒng)所屬事業(yè)單位招聘6人筆試歷年參考題庫(kù)附帶答案詳解
- 江蘇2025年國(guó)家稅務(wù)總局江蘇省稅務(wù)局下屬事業(yè)單位招聘教師6人筆試歷年參考題庫(kù)附帶答案詳解
- 新疆2025年新疆洛浦縣維吾爾醫(yī)醫(yī)院招聘護(hù)理專業(yè)人員12人筆試歷年參考題庫(kù)附帶答案詳解
- 懷化2025年湖南省懷化市粟裕同志紀(jì)念館-高椅景區(qū)管理所招聘講解員筆試歷年參考題庫(kù)附帶答案詳解
- 平頂山2025年河南平頂山市城鄉(xiāng)一體化示范區(qū)招聘教師70人筆試歷年參考題庫(kù)附帶答案詳解
- 安康2025年陜西安康寧陜縣城區(qū)及筒車灣鎮(zhèn)部分學(xué)校選調(diào)教師29人筆試歷年參考題庫(kù)附帶答案詳解
- 職業(yè)人群心理健康促進(jìn)方案
- 臺(tái)州浙江臺(tái)州玉環(huán)市文化和廣電旅游體育局招聘編外用工人員筆試歷年參考題庫(kù)附帶答案詳解
- 南京江蘇南京市公安局江寧分局招聘警務(wù)輔助人員100人筆試歷年參考題庫(kù)附帶答案詳解
- 其他地區(qū)2025年新疆博爾塔拉州招聘5名中學(xué)教師筆試歷年參考題庫(kù)附帶答案詳解
- 成人呼吸支持治療器械相關(guān)壓力性損傷的預(yù)防
- DHA乳狀液制備工藝優(yōu)化及氧化穩(wěn)定性的研究
- 2023年江蘇省五年制專轉(zhuǎn)本英語(yǔ)統(tǒng)考真題(試卷+答案)
- 三星-SHS-P718-指紋鎖使用說明書
- 岳麓書社版高中歷史必修三3.13《挑戰(zhàn)教皇的權(quán)威》課件(共28張PPT)
- 2007年國(guó)家公務(wù)員考試《申論》真題及參考答案
- GC/T 1201-2022國(guó)家物資儲(chǔ)備通用術(shù)語(yǔ)
- 污水管網(wǎng)監(jiān)理規(guī)劃
- GB/T 6730.65-2009鐵礦石全鐵含量的測(cè)定三氯化鈦還原重鉻酸鉀滴定法(常規(guī)方法)
- GB/T 35273-2020信息安全技術(shù)個(gè)人信息安全規(guī)范
- 《看圖猜成語(yǔ)》課件
評(píng)論
0/150
提交評(píng)論