版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心1C+大學(xué)基礎(chǔ)教程大學(xué)基礎(chǔ)教程第第1212章章 I/OI/O流及輸入輸出流及輸入輸出 北京郵電大學(xué)電信工程學(xué)院北京郵電大學(xué)電信工程學(xué)院 計(jì)算機(jī)技術(shù)中心計(jì)算機(jī)技術(shù)中心2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-2-C+語言沒有輸入/輸出語句,但C+編譯系統(tǒng)帶有一個(gè)面向?qū)ο蟮妮斎?輸出軟件包,它就是I/O流類庫。軟件包有時(shí)稱為庫文件(.lib文件),類庫是指用面向?qū)ο蠓椒▽?shí)現(xiàn)的軟件包。 12.1 12.1 流類庫概述流類庫概述12.2 12.2 輸出流輸出流12.3 12.3 輸入流輸入流 12.4 12.4 輸入輸入/ /輸出
2、流輸出流 12.5 12.5 重載插入和提取運(yùn)算符重載插入和提取運(yùn)算符第第1212章章 I/OI/O流及輸入輸出流及輸入輸出2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-4-C C語言中讀寫文件語言中讀寫文件步驟步驟: :n打開文件打開文件n讀讀/ /寫文件寫文件n關(guān)閉文件關(guān)閉文件例例: : 寫文件寫文件#include struct Date int month, date, year; ;void main() const N=30;short k;struct Date dtN;FILE *pf;fopen(f:date.dat,”wb”);for(k=0; kN; k+)
3、dtk.year=2006;dtk.month=4;dtk.date=k+1;fwrite(dt,sizeof(Date), N,pf);fclose();2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-5-C C語言中讀寫文件語言中讀寫文件步驟步驟: :n打開文件打開文件n讀讀/ /寫文件寫文件n關(guān)閉文件關(guān)閉文件例例: : 讀文件讀文件#include struct Date int month, date, year; ;void main() const N=30;short k;struct Date dtN;FILE *pf;fopen(f:date.dat,”rb”);
4、fread(dt,sizeof(Date), N,pf);for(k=0; kN; k+) coutdtk.yeardtk.monthdtk.date插入運(yùn)算符:插入運(yùn)算符:12.1 12.1 流類庫概述流類庫概述 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心13 12.2 12.2 輸出流輸出流2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-14-系統(tǒng)已經(jīng)定義了標(biāo)準(zhǔn)設(shè)備輸出流類,并且已經(jīng)定義系統(tǒng)已經(jīng)定義了標(biāo)準(zhǔn)設(shè)備輸出流類,并且已經(jīng)定義了該類的對(duì)象:了該類的對(duì)象:ncout cout 標(biāo)準(zhǔn)輸出,緩沖區(qū)滿時(shí)被輸出。標(biāo)準(zhǔn)輸出,緩沖區(qū)滿時(shí)被輸出。ncerr cerr 標(biāo)準(zhǔn)錯(cuò)誤輸
5、出,沒有緩沖,發(fā)送給它的內(nèi)容立即標(biāo)準(zhǔn)錯(cuò)誤輸出,沒有緩沖,發(fā)送給它的內(nèi)容立即被輸出。被輸出。nclog clog 類似于類似于cerrcerr,但是有緩沖,緩沖區(qū)滿時(shí)被輸出。但是有緩沖,緩沖區(qū)滿時(shí)被輸出。 程序中只需程序中只需# #include include ,可以直接使用可以直接使用這些對(duì)象,從鍵盤輸入,向顯示器輸出。這些對(duì)象,從鍵盤輸入,向顯示器輸出。 12.2.1 12.2.1 設(shè)備輸出流設(shè)備輸出流 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-15-標(biāo)準(zhǔn)輸出設(shè)備一般指顯示器,但可以在操作系統(tǒng)標(biāo)準(zhǔn)輸出設(shè)備一般指顯示器,但可以在操作系統(tǒng)下修改為別的設(shè)備,比如,重定向?yàn)榇疟P文件
6、。下修改為別的設(shè)備,比如,重定向?yàn)榇疟P文件。流流cerrcerr和和clogclog把信息輸出到默認(rèn)錯(cuò)誤日志上,該把信息輸出到默認(rèn)錯(cuò)誤日志上,該日志通常是指顯示器,不能重定向。日志通常是指顯示器,不能重定向。 12.2.1 12.2.1 設(shè)備輸出流設(shè)備輸出流 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-16-例例12.112.1:將:將4 4個(gè)浮點(diǎn)數(shù)輸出到屏幕顯示,每行輸出一個(gè)浮點(diǎn)數(shù)輸出到屏幕顯示,每行輸出一個(gè)數(shù),靠右對(duì)齊,占個(gè)數(shù),靠右對(duì)齊,占1010個(gè)字符的寬度,不足個(gè)字符的寬度,不足1010個(gè)字個(gè)字符在數(shù)的前面用符在數(shù)的前面用“* *”號(hào)填充。號(hào)填充。 /例例12.112.1
7、:使用成員函數(shù)控制輸出格式:使用成員函數(shù)控制輸出格式#include using namespace std;void main() double values = 1.23,35.36,653.7,4358.24; for(int i=0;i4;i+) cout.width(10); cout.fill(*); cout valuesi n; 使用使用widthwidth函數(shù)控制輸出寬函數(shù)控制輸出寬度為度為1010個(gè)字符,默認(rèn)的個(gè)字符,默認(rèn)的按右對(duì)齊,不足按右對(duì)齊,不足1010個(gè)字個(gè)字符的前邊加空格,如果符的前邊加空格,如果不想使用默認(rèn)的空格填不想使用默認(rèn)的空格填充符,可以調(diào)用充符,可以調(diào)用
8、fillfill函數(shù)函數(shù)設(shè)置填充字符的值。設(shè)置填充字符的值。 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-17-可以使用操縱符或調(diào)用成員函數(shù)進(jìn)行輸出格式控制可以使用操縱符或調(diào)用成員函數(shù)進(jìn)行輸出格式控制,可以根據(jù)需要靈活選用??梢愿鶕?jù)需要靈活選用。 操縱符是在標(biāo)準(zhǔn)頭文件操縱符是在標(biāo)準(zhǔn)頭文件iomanipiomanip中定義的。中定義的。 12.2.1 12.2.1 設(shè)備輸出流設(shè)備輸出流 操縱符操縱符成員函數(shù)成員函數(shù)功能描述功能描述decflags(10)按按1010進(jìn)制輸出進(jìn)制輸出hexflag(16)按按1616進(jìn)制輸出進(jìn)制輸出octflag(8)按按8 8進(jìn)制輸出進(jìn)制輸出set
9、fill(c)fill(c)設(shè)置填充字符為設(shè)置填充字符為c csetprecision(n)precision(n)顯示小數(shù)精度為顯示小數(shù)精度為n n位位width(n)設(shè)置輸出寬度為設(shè)置輸出寬度為n n個(gè)字符個(gè)字符setw(n)只有只有setw()setw()不是持續(xù)性的,使用一次,只負(fù)責(zé)設(shè)置一次不是持續(xù)性的,使用一次,只負(fù)責(zé)設(shè)置一次輸出的寬度,其它操縱符都是持續(xù)性的。輸出的寬度,其它操縱符都是持續(xù)性的。 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-18-操縱符操縱符成員函數(shù)成員函數(shù)功能描述功能描述fixedflags(ios:fixed)按十進(jìn)制表示法顯示浮點(diǎn)數(shù)按十進(jìn)制表示法
10、顯示浮點(diǎn)數(shù)scientificflags(ios:scientific)按科學(xué)記數(shù)法顯示浮點(diǎn)數(shù)按科學(xué)記數(shù)法顯示浮點(diǎn)數(shù)leftflags(ios:left)左對(duì)齊左對(duì)齊rightflags(ios:right)右對(duì)齊右對(duì)齊uppercaseflags(ios:uppercase)16進(jìn)制數(shù)大寫輸出進(jìn)制數(shù)大寫輸出lowercaseflags(ios:lowercase)16進(jìn)制數(shù)小寫輸出進(jìn)制數(shù)小寫輸出showpointflags(ios:showpoint)總是顯示小數(shù)點(diǎn)總是顯示小數(shù)點(diǎn)noshowpointflags(ios:noshowpoint)僅當(dāng)小數(shù)部分不為僅當(dāng)小數(shù)部分不為0時(shí)才顯示小數(shù)點(diǎn)
11、時(shí)才顯示小數(shù)點(diǎn)boolalphaflags(ios:boolalphi)用符號(hào)用符號(hào)true和和false顯示邏輯值顯示邏輯值noboolalphaflags(ios:noboolalphi)用用1和和0顯示邏輯值顯示邏輯值showposflags(ios:showpos)顯示正數(shù)前有顯示正數(shù)前有“+”號(hào)號(hào)noshowposflags(ios:noshowpos)顯示正數(shù)前沒有顯示正數(shù)前沒有“+”號(hào)號(hào)2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-19-例例12.212.2:輸出:輸出8 8進(jìn)制和進(jìn)制和1616進(jìn)制數(shù)進(jìn)制數(shù) #include #include using namesp
12、ace std;void main() int num=1000;cout.flags(ios:uppercase);coutDecimal:decnumendl;coutHexadecimal:hexnumendl;coutOctal:octnumendl;把正數(shù)把正數(shù)10001000按按8 8進(jìn)制、進(jìn)制、1616進(jìn)制等輸出進(jìn)制等輸出到屏幕顯示,使用操縱符進(jìn)行控到屏幕顯示,使用操縱符進(jìn)行控制。制。1616進(jìn)制顯示時(shí),如果遇到進(jìn)制顯示時(shí),如果遇到A-FA-F,要求用大寫,調(diào)用成員函數(shù)進(jìn)行要求用大寫,調(diào)用成員函數(shù)進(jìn)行控制。控制。2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-20-例例
13、12.412.4:使用操縱符:使用操縱符showpointshowpoint控制浮點(diǎn)數(shù)顯示出小數(shù)點(diǎn);使用控制浮點(diǎn)數(shù)顯示出小數(shù)點(diǎn);使用showposshowpos控制正數(shù)顯示出控制正數(shù)顯示出“+”“+”號(hào),默認(rèn)的是不顯示。號(hào),默認(rèn)的是不顯示。 /例例12.4:強(qiáng)制顯示小數(shù)點(diǎn)和符號(hào):強(qiáng)制顯示小數(shù)點(diǎn)和符號(hào)#include #include using namespace std;void main() cout10.0/5endl;coutshowpoint10.0/5endl;cout10 -20endl;coutshowpos10 -20open(“filename.dat”, iosmode)
14、; 12.2.2 12.2.2 文件輸出流文件輸出流 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-23-Ofstream類構(gòu)造函數(shù)原型類構(gòu)造函數(shù)原型ofstream();ofstream( const char* szName, int nMode = ios:out, int nProt = filebuf:openprot );ofstream:openvoid open( const char* szName, int nMode = ios:out, int nProt = filebuf:openprot );文件名文件名共享方式,一般共享方式,一般用缺省值。用缺省值。
15、文件打開方式,表文件打開方式,表12-3ios:in,ios:out,ios:nocreate,ios:binary2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-24-例例12.512.5:把學(xué)生信息保存到磁盤文件。學(xué)生的信息包括:把學(xué)生信息保存到磁盤文件。學(xué)生的信息包括:學(xué)號(hào)、姓名、年齡等,是一個(gè)結(jié)構(gòu)類型學(xué)號(hào)、姓名、年齡等,是一個(gè)結(jié)構(gòu)類型studentstudent,結(jié)構(gòu)結(jié)構(gòu)變量在定義時(shí)就初始化。變量在定義時(shí)就初始化。#include #include using namespace std;struct student long num; char name20; char s
16、ex; int age; s t u = 2 0 0 4 111 8 , L i Li,F,18;void main() ofstream ofile(student.txt); ofilesetw(8)stu.num setw(20) setw(3)stu.sex setw(3)stu.ageendl;2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-25-在輸出到文件時(shí),同樣可以使用操縱符,在輸出到文件時(shí),同樣可以使用操縱符,或使用與操縱符等價(jià)的成員函數(shù)進(jìn)行格或使用與操縱符等價(jià)的成員函數(shù)進(jìn)行格式控制。式控制。 12.2.2 12.2.2 文件輸出流文件輸出流 202
17、2-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-26-文件輸出流常用的一些其它的成員函數(shù)文件輸出流常用的一些其它的成員函數(shù):openopen函數(shù):打開文件函數(shù):打開文件putput函數(shù):把一個(gè)字符寫到輸出流中函數(shù):把一個(gè)字符寫到輸出流中. 例例:cout.put(c);writewrite函數(shù):把內(nèi)存中的一塊內(nèi)容寫到一個(gè)輸出文件函數(shù):把內(nèi)存中的一塊內(nèi)容寫到一個(gè)輸出文件流中流中.n把內(nèi)存中的一塊內(nèi)容寫到一個(gè)輸出文件流中,該函數(shù)帶兩把內(nèi)存中的一塊內(nèi)容寫到一個(gè)輸出文件流中,該函數(shù)帶兩個(gè)參數(shù):一個(gè)個(gè)參數(shù):一個(gè)charchar指針(指向內(nèi)存數(shù)據(jù)的起始地址)和一指針(指向內(nèi)存數(shù)據(jù)的起始地址)和一個(gè)所寫
18、的字節(jié)數(shù)。常用于二進(jìn)制文件的輸出。個(gè)所寫的字節(jié)數(shù)。常用于二進(jìn)制文件的輸出。 closeclose函數(shù):關(guān)閉文件函數(shù):關(guān)閉文件 12.2.2 12.2.2 文件輸出流文件輸出流 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-27-例例12.712.7:把數(shù)組中:把數(shù)組中1010個(gè)整數(shù)保存到磁盤文件中。個(gè)整數(shù)保存到磁盤文件中。其中包含整數(shù)其中包含整數(shù)1010。 /二進(jìn)制輸出文件二進(jìn)制輸出文件#include using namespace std;void main() short a10=82, 36, 25, 79, 44, 10, 51, 90, 63, 28; ofstream
19、 ofile(“f:temptest.dat”, ios:binary); ofile.write(char*)a, 20); ofile.close;2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心28 12.3 12.3 輸入流輸入流 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-29-系統(tǒng)已經(jīng)預(yù)先定義了標(biāo)準(zhǔn)設(shè)備輸入流,并且已經(jīng)定系統(tǒng)已經(jīng)預(yù)先定義了標(biāo)準(zhǔn)設(shè)備輸入流,并且已經(jīng)定義了該類的對(duì)象義了該類的對(duì)象cincin。一般不需要構(gòu)造新的設(shè)備輸。一般不需要構(gòu)造新的設(shè)備輸入流對(duì)象,只使用預(yù)先定義的入流對(duì)象,只使用預(yù)先定義的cincin對(duì)象。對(duì)象。 從輸入流提取時(shí),也可以使用的操
20、縱符進(jìn)行輸入格從輸入流提取時(shí),也可以使用的操縱符進(jìn)行輸入格式的控制。式的控制。 從輸入流提取時(shí),也可以使用流類定義的函數(shù)進(jìn)行從輸入流提取時(shí),也可以使用流類定義的函數(shù)進(jìn)行輸入操作。輸入操作。 12.3.1 12.3.1 標(biāo)準(zhǔn)設(shè)備輸入流標(biāo)準(zhǔn)設(shè)備輸入流 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-30-從輸入流提取時(shí),也可以使用流類定義的函數(shù)進(jìn)行輸從輸入流提取時(shí),也可以使用流類定義的函數(shù)進(jìn)行輸入操作。常用的函數(shù)有:入操作。常用的函數(shù)有: getget函數(shù)函數(shù): : 非格式化非格式化getget函數(shù)的功能與提取運(yùn)算符(函數(shù)的功能與提取運(yùn)算符()很相)很相象,主要的不同點(diǎn)是象,主要的不同點(diǎn)
21、是getget函數(shù)在讀取數(shù)據(jù)時(shí)包括空函數(shù)在讀取數(shù)據(jù)時(shí)包括空格字符,而提取運(yùn)算符在默認(rèn)情況下以空格字符格字符,而提取運(yùn)算符在默認(rèn)情況下以空格字符作為分隔符,無法讀取。作為分隔符,無法讀取。 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-31-#include using namespace std;void main() char letter; while(!cin.eof() letter =cin.get(); letter =toupper(letter); if(letter=Y) cout Y be met.; break; cout letter; 例例12.812.8
22、:用:用getget函數(shù)循環(huán)讀取字符,轉(zhuǎn)換成大寫輸函數(shù)循環(huán)讀取字符,轉(zhuǎn)換成大寫輸出,直到用戶鍵入出,直到用戶鍵入YY時(shí)結(jié)束。時(shí)結(jié)束。 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-32-getline函數(shù)函數(shù) 非格式化非格式化getlinegetline成員函數(shù)的功能是允許從輸入成員函數(shù)的功能是允許從輸入流中讀取多個(gè)字符,并且允許指定輸入終止字符流中讀取多個(gè)字符,并且允許指定輸入終止字符(默認(rèn)值是換行符)。在讀取完成后,從讀取的(默認(rèn)值是換行符)。在讀取完成后,從讀取的內(nèi)容中刪除該終止字符。可以讀取一個(gè)包含空格內(nèi)容中刪除該終止字符。可以讀取一個(gè)包含空格的文本塊,然后再進(jìn)行分析。的文
23、本塊,然后再進(jìn)行分析。 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-33-例例12.912.9:使用:使用getlinegetline從鍵盤輸入中讀取,直到遇到從鍵盤輸入中讀取,直到遇到$字符?;蛘咦疃嘧x取字符。或者最多讀取8080個(gè)字符,然后把讀個(gè)字符,然后把讀取的信息再輸出到屏幕顯示出來。取的信息再輸出到屏幕顯示出來。 /例例12.9:使用輸入流的成員函數(shù):使用輸入流的成員函數(shù)getline()()#include using namespace std;void main() char line80;coutInput a string terminated by $end
24、l;cin.getline(line,80,$);coutlineendl;2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-34-文件輸入流類文件輸入流類ifstreamifstream,支持從磁盤文件讀取。,支持從磁盤文件讀取。如果需要一個(gè)僅用于讀取的磁盤文件,可以構(gòu)如果需要一個(gè)僅用于讀取的磁盤文件,可以構(gòu)造一個(gè)造一個(gè)ifstreamifstream類的對(duì)象,并且可以指定使用類的對(duì)象,并且可以指定使用二進(jìn)制或文本模式。二進(jìn)制或文本模式??梢栽诙x流對(duì)象的同時(shí),指定相關(guān)聯(lián)的文件,可以在定義流對(duì)象的同時(shí),指定相關(guān)聯(lián)的文件,在構(gòu)造該對(duì)象時(shí)自動(dòng)打開文件;也可以先定義在構(gòu)造該對(duì)象時(shí)自動(dòng)打開文
25、件;也可以先定義流對(duì)象,隨后調(diào)用流對(duì)象,隨后調(diào)用openopen成員函數(shù),指定相關(guān)聯(lián)成員函數(shù),指定相關(guān)聯(lián)的文件并打開。的文件并打開。 12.3.2 12.3.2 文件輸入流文件輸入流 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-35-很多格式化選項(xiàng)和成員函數(shù)都可以應(yīng)用于很多格式化選項(xiàng)和成員函數(shù)都可以應(yīng)用于ifstreamifstream類對(duì)象類對(duì)象 nreadread函數(shù)函數(shù) read read成員函數(shù)從一個(gè)文件把字節(jié)流讀到一個(gè)指定的成員函數(shù)從一個(gè)文件把字節(jié)流讀到一個(gè)指定的存儲(chǔ)區(qū),由長(zhǎng)度參數(shù)確定要讀的字節(jié)數(shù)。當(dāng)讀了指存儲(chǔ)區(qū),由長(zhǎng)度參數(shù)確定要讀的字節(jié)數(shù)。當(dāng)讀了指定的字節(jié)數(shù)或遇到文件
26、結(jié)束符時(shí)讀結(jié)束。定的字節(jié)數(shù)或遇到文件結(jié)束符時(shí)讀結(jié)束。 12.3.2 12.3.2 文件輸入流文件輸入流 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-36-#include #include #include using namespace std;void main()coutFile of values to be averaged: ;char *FileName=“f:temptest.dat”;ifstream file(FileName,ios:binary);if (! file)cerrCannot open FileName for averaging.endl;
27、exit(1);例例12.1312.13:設(shè)計(jì)一個(gè)通用目的的平均值計(jì)算器,參加平均計(jì)算的:設(shè)計(jì)一個(gè)通用目的的平均值計(jì)算器,參加平均計(jì)算的數(shù)都存在一個(gè)文件中。運(yùn)行計(jì)算器程序時(shí),把該文件的文件名數(shù)都存在一個(gè)文件中。運(yùn)行計(jì)算器程序時(shí),把該文件的文件名從鍵盤讀進(jìn)來,打開文件,讀取其中的數(shù)據(jù)進(jìn)行平均計(jì)算,把從鍵盤讀進(jìn)來,打開文件,讀取其中的數(shù)據(jù)進(jìn)行平均計(jì)算,把計(jì)算結(jié)果輸出到屏幕顯示。計(jì)算結(jié)果輸出到屏幕顯示。 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-37- int a20, Numbers (20);float Sum = 0;file.read(char*)a,Numbers); fo
28、r(int i=0;i 0)float Average = Sum/Numbers;coutAverage of values from FileName is Averageendl;elsecerrNo values to average in FileNameendl;2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心38 12.4 12.4 輸入輸入/ /輸出流輸出流2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-39-輸入輸出流類輸入輸出流類iostreamiostream,該類對(duì)象可以該類對(duì)象可以是數(shù)據(jù)的源或目的。是數(shù)據(jù)的源或目的。iostreamiostream類
29、有一個(gè)重要的派生類:類有一個(gè)重要的派生類:fstreamfstream,它支持磁盤文件的輸入和輸出,它支持磁盤文件的輸入和輸出,如果程序需要對(duì)同一個(gè)磁盤文件既要讀如果程序需要對(duì)同一個(gè)磁盤文件既要讀又要寫,可以構(gòu)造一個(gè)又要寫,可以構(gòu)造一個(gè)fstreamfstream對(duì)象。對(duì)象。 12.4 12.4 輸入輸入/ /輸出流輸出流 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-40-#include #include using namespace std;struct student /聲明新的數(shù)據(jù)類型聲明新的數(shù)據(jù)類型 long num;/學(xué)號(hào)學(xué)號(hào) char name20; /姓名姓名
30、char sex;/性別性別 int age;/年齡年齡 stu=20041110,zhang hua,M,21;void main()student s1;fstream myfile(student.dat,ios:in|ios:out|ios:app|ios:binary);例例12.1412.14:打開一個(gè)已有的文件,在文件中增加一個(gè)學(xué)生的記錄,并:打開一個(gè)已有的文件,在文件中增加一個(gè)學(xué)生的記錄,并把所有記錄輸出顯示。把所有記錄輸出顯示。 2022-3-27北京郵電大學(xué)電信工程學(xué)院計(jì)算機(jī)技術(shù)中心-41-if (myfile.good() myfile.write(char*)&stu,
31、 sizeof(stu);myfile.seekg(0);myfile.read(char*) &s1, sizeof(s1);while (!myfile.eof()couts1.num endl;myfile.read(char*) &s1, sizeof(s1);elsecoutCant open file! (istream & ins, MyClass & obj);ostream & operator (ostream & outs, MyClass & obj); 注意:不能將重載的插入和提取運(yùn)算符定義為類的成注意:不能將重載的插入和提取運(yùn)算符定義為類的成員函數(shù),只能定義為一般的函數(shù)或者類的友元函數(shù)。員函數(shù),只能定義為一般的函數(shù)或者類的友元函數(shù)。12.5 12.5 重
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州城市職業(yè)學(xué)院《中國(guó)文化》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年廣東建筑安全員-B證(項(xiàng)目經(jīng)理)考試題庫
- 2025山西省建筑安全員B證(項(xiàng)目經(jīng)理)考試題庫
- 貴陽信息科技學(xué)院《GS原理與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州珠江職業(yè)技術(shù)學(xué)院《藥物分子生物學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025山東省建筑安全員C證考試(專職安全員)題庫及答案
- 2025年云南建筑安全員A證考試題庫
- 2025年山東省建筑安全員-B證考試題庫附答案
- 2025黑龍江省建筑安全員A證考試題庫及答案
- 2025福建建筑安全員A證考試題庫
- 服裝廠安全教育培訓(xùn)規(guī)章制度
- 車輛修理廠自查自糾整改方案及總結(jié)報(bào)告
- 2024版成人腦室外引流護(hù)理TCNAS 42─20241
- **鎮(zhèn)家庭醫(yī)生簽約服務(wù)績(jī)效分配方案
- 湖北省八校2025屆高二生物第一學(xué)期期末質(zhì)量檢測(cè)模擬試題含解析
- 四川省食品生產(chǎn)企業(yè)食品安全員理論考試題庫(含答案)
- 新能源發(fā)電技術(shù) 課件 第6章 地?zé)岚l(fā)電
- 人教版八年級(jí)音樂上冊(cè) 第一單元 《拉起手》 教案
- 《馬克思主義基本原理》學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 《旅游大數(shù)據(jù)》-課程教學(xué)大綱
- 工藝以及質(zhì)量保證措施,工程實(shí)施的重點(diǎn)、難點(diǎn)分析和解決方案
評(píng)論
0/150
提交評(píng)論