




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1 第九章C 的I O流類庫 計算機(jī)系 面向?qū)ο蟪绦蛟O(shè)計及C 2 主要內(nèi)容基本概念C 的流及流類庫用戶自定義類型的輸入 輸出文件的輸入 輸出應(yīng)用舉例 3 基本概念流 與數(shù)據(jù)傳送有關(guān)系的事物叫做流 C 用流表示數(shù)據(jù)的傳輸操作 流總是與某一設(shè)備 如 鍵盤 屏幕 硬盤 軟盤等 相聯(lián)系 流類 C 為輸入 輸出定義了一組不同的類 包含要進(jìn)行傳送的數(shù)據(jù)的結(jié)構(gòu) 屬性 特征和行為 都將其放在流庫中 叫做流類 流的對象 用流類聲明該流類的一個對象 代表某個輸入設(shè)備或輸出設(shè)備 并與具體的某個文件相聯(lián)系 叫做流的對象 輸入流 有一種流表示數(shù)據(jù)從某個載體或設(shè)備傳送到內(nèi)存緩沖區(qū)變量中 叫做輸入流 輸出流 有一種流表示數(shù)據(jù)從內(nèi)存送到某個載體或設(shè)備中 叫做輸出流 4 7 2C 的流及流類庫C 流庫 streamlibrary 用派生方法建立起來的一個輸入輸出類庫 它有兩個平行的基類 streambuf類和ios類 它們在iostream h中定義 是兩個非常低級的類 所有流類均以兩者之一作為其基類 一 streambuf類streambuf類主要負(fù)責(zé)緩沖區(qū)的處理 緩沖區(qū)由一字符序列和兩個指針 輸入緩沖區(qū)指針和輸出緩沖區(qū)指針 組成 這兩個指針指向字符要被插入或被取出的位置 streambuf類可以派生出三個類 filebuf類 strstreambuf類和conbuf類 5 它們的類等級如下 streambuffilebufstrstreambufconbuf二 ios類ios類及其派生類提供用戶使用流類的接口 提供了輸入和輸出所需要的公共操作 它支持對streambuf的緩沖區(qū)進(jìn)行輸入輸出時的格式化或非格式化轉(zhuǎn)換 ios類有四個直接派生類 istream 輸入流 ostream 輸出流 fstreambase 文件流 strstreambase 串流 6 iosistreamostreamfstreambasestrstreambase以這四種基本的流類為基礎(chǔ) 可派生出多種實用的流類 iostream 輸入 輸出流 ifstream 輸入文件流 ofstream 輸出文件流 fstream 輸入 輸出文件流 在istream ostream和iostream類的基礎(chǔ)上分別重載運(yùn)算符 就得到了istream withassign ostream withassign和iostream withassign類 類等級如下 7 當(dāng)開始執(zhí)行C 程序時 C 會有幾個自動打開的預(yù)定義流 它們是 cin 與標(biāo)準(zhǔn)輸入設(shè)備相關(guān)的流 cout 與標(biāo)準(zhǔn)輸出設(shè)備相關(guān)的流 cerr和clog 與標(biāo)準(zhǔn)錯誤輸出設(shè)備相關(guān)的流 cerr和clog之間的區(qū)別是cerr沒有被緩沖 clog被緩沖 只有當(dāng)緩沖區(qū)滿時 才進(jìn)行輸出 這四個預(yù)定義的流在iostream h里被說明為withassign類的對象 externistream withassigncin 等價于stdinexternostream withassigncout 等價于stdoutexternostream withassigncerr 等價于stderrexternostream withassignclog 等價于帶緩沖的tderr可以用istream和ostream等類聲明自己的流對象 8 7 4用戶自定義類型的輸入 輸出一 重載輸出運(yùn)算符 輸出運(yùn)算符 也稱插入運(yùn)算符 有兩個操作數(shù) 左操作數(shù)為ostream類類型的對象 右操作數(shù)可以是一個預(yù)定義類型的變量 也可以是重載了該運(yùn)算符 的類的對象 重載運(yùn)算符 的定義格式如下 ostream 一般采用友元函數(shù)形式重載 9 書中例7 7 p258 定義了二維坐標(biāo)類coord 并通過友元函數(shù)重載了輸出運(yùn)算符 定義格式如下 istream 一般采用友元函數(shù)形式重載 見例7 8 P260 10 7 5文件的輸入 輸出概述文件是具有相同類型的數(shù)據(jù)的任意序列 一般是指存放在外部介質(zhì)上的數(shù)據(jù)的集合 要對文件進(jìn)行處理 必須首先建立一個文件 根據(jù)文件數(shù)據(jù)的組織形式 可將文件分為ASCII文件和二進(jìn)制文件 ASCII文件也稱文本 text 文件 他們存放在介質(zhì)上的存儲形式和存儲過程是不一樣的 對文件的操作有兩種 一是向文件輸出數(shù)據(jù) 另一是從文件讀入數(shù)據(jù)到內(nèi)存 寫入到文件和從文件讀出的過程可分解為三個抽象的概念 往流中加入一個字符 從流中取出一個字符 一旦建立一個流 把它與文件相關(guān)連以便用來讀和寫 11 7 5 1文件打開與關(guān)閉在C 中 打開一個文件 就是將這個文件與一個流建立關(guān)聯(lián) 關(guān)閉一個文件 就是取消這種關(guān)聯(lián) C 有三種類型的文件流 輸入文件流ifstream 輸出文件流ofstream 輸入 輸出文件流fstream 類定義在fstream h中 1 打開文件要將文件輸入 輸出 首先必須打開文件 分三個步驟 1 在程序中要包含頭文件fstream h 2 建立流 定義流類的對象 ifstreamin 輸入流對象in 用于inputofstreamout 輸出流對象out 用于outputfstreamboth 輸入 輸出流對象both 用于inputandoutput 12 3 使用open 函數(shù) 將建立的流與文件相關(guān)連 open 函數(shù)的原型為 voidopen constchar filename intmode intaccess 其中filename用來傳遞文件名的 mode值決定文件的打開方式 其所能取的值是在iostream h中ios類的公有部分定義的枚舉值 enumopen mode in 0 x01out 0 x02ate 0 x04app 0 x08trunc 0 x10nocreate 0 x20noreplace 0 x40binary 0 x80 每個枚舉值的含義請見書中P262下半部分 第二個參數(shù)mode值有時也用缺省值 13 第三個參數(shù)值access是文件的保護(hù)方式 與操作系統(tǒng)有關(guān) 一般使用缺省值 打開文件的一般格式 定義流類的對象 流類對象 open 文件名 使用方式 訪問方式 或定義流類的對象 文件名 使用方式 訪問方式 例如 ofstreamout out open test ios out 0 如果未成功打開文件 則流變量的值為0 因此打開文件時 通常要判斷打開是否成功 2 關(guān)閉文件當(dāng)結(jié)束一個文件的操作后 要及時關(guān)閉該文件 以防止它被誤用 ofstreamout test 關(guān)閉文件的一般格式為 流類對象 close 14 7 5 2文件的讀寫1 文本文件的讀寫操作方法 用輸入 輸出運(yùn)算符 例7 9 P265 例7 10 P265 15 2 二進(jìn)制文件讀寫操作由于此時讀寫的數(shù)據(jù)都是無意義的二進(jìn)制字符 這時不能用 運(yùn)算符來讀寫 方法有 1 使用put 和get 函數(shù) 例7 11 P266 2 使用read 函數(shù) 例7 12 P268和write 函數(shù) 例7 13 P268上面這4個函數(shù)也可以用于文本文件的讀寫 16 3 檢測文件結(jié)束可以使用eof 函數(shù)來檢測文件是否到達(dá)文件尾的標(biāo)志位EOF該函數(shù)的原型是inteof 示例 ifstreamifs if ifs eof 尚未到達(dá)文件尾 或者可以檢查流對象是否為零 為零表示文件結(jié)束示例 ifstreamifs if ifs 尚未到達(dá)文件尾 17 4 隨機(jī)存取文件隨機(jī)存取文件可以根據(jù)需要訪問文件中的任一個元素 1 文件指針函數(shù)a seekg pos 在輸入流中從頭開始移動pos個字節(jié)文件讀指針seekp pos 在輸出流中從頭開始移動pos個字節(jié)文件寫指針b seekg pos origin seekp pos o
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福州市七上期末數(shù)學(xué)試卷
- 高招提前招生數(shù)學(xué)試卷
- 高中定積分?jǐn)?shù)學(xué)試卷
- 高新區(qū)二診數(shù)學(xué)試卷
- 福田六年級數(shù)學(xué)試卷
- 設(shè)備安全培訓(xùn)課件
- 2025至2030代駕行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025至2030船用消防設(shè)備行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025至2030廣告設(shè)計制作產(chǎn)業(yè)市場深度調(diào)研及發(fā)展趨勢與發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030不銹鋼欄桿行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 一級建造師繼續(xù)教育考試題(重點(diǎn))
- 組合導(dǎo)航與融合導(dǎo)航解析課件
- 數(shù)與代數(shù)課件
- 工會審計實務(wù)課件
- 預(yù)防艾滋病、梅毒和乙肝母嬰傳播相關(guān)報表、上報流程和要求
- 工期的保證體系及保證措施
- 五山文學(xué)全集第一卷
- 中國鐵路總公司《鐵路技術(shù)管理規(guī)程》(高速鐵路部分)2014年7月
- TRD深基坑止水帷幕施工方案(22頁)
- 企業(yè)組織架構(gòu)圖模板
- 藏醫(yī)院制劑中心建設(shè)項目建議書寫作模板-定制
評論
0/150
提交評論