程序設(shè)計(jì)基礎(chǔ):10第十章 C++的輸入輸出

上傳人:努力****83 文檔編號(hào):240056817 上傳時(shí)間:2024-03-13 格式:PPT 頁(yè)數(shù):79 大?。?48KB
收藏 版權(quán)申訴 舉報(bào) 下載
程序設(shè)計(jì)基礎(chǔ):10第十章 C++的輸入輸出_第1頁(yè)
第1頁(yè) / 共79頁(yè)
程序設(shè)計(jì)基礎(chǔ):10第十章 C++的輸入輸出_第2頁(yè)
第2頁(yè) / 共79頁(yè)
程序設(shè)計(jì)基礎(chǔ):10第十章 C++的輸入輸出_第3頁(yè)
第3頁(yè) / 共79頁(yè)

下載文檔到電腦,查找使用更方便

40 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《程序設(shè)計(jì)基礎(chǔ):10第十章 C++的輸入輸出》由會(huì)員分享,可在線閱讀,更多相關(guān)《程序設(shè)計(jì)基礎(chǔ):10第十章 C++的輸入輸出(79頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1第十章第十章 C+的輸入輸出的輸入輸出 流流 文件文件 文件流的使用:文件的輸入和輸出文件流的使用:文件的輸入和輸出合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院210.1 C+語(yǔ)言的輸入語(yǔ)言的輸入/輸出輸出10.1.1 外部外部設(shè)備與文件與文件外部外部設(shè)備:n存存儲(chǔ)設(shè)備:存:存儲(chǔ)信息,信息,塊設(shè)備(字符(字符塊)介介質(zhì):硬:硬盤(pán)、軟盤(pán)、磁、磁帶、光、光盤(pán)、組織:文件:文件n輸入入/輸出出設(shè)備:輸入入/輸出信息,字符出信息,字符設(shè)備 輸入:入:鍵盤(pán)、鼠、鼠標(biāo)、掃描描儀、輸出:出:顯示器、打印機(jī)、示器、打印機(jī)、繪圖儀、合肥工

2、業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院310.1 C+語(yǔ)言的輸入語(yǔ)言的輸入/輸出輸出10.1.1 外部外部設(shè)備與文件與文件文件(文件(file):):n作作為輸入入/輸出的出的對(duì)象象n與外部與外部設(shè)備之之間建立關(guān)建立關(guān)聯(lián),作,作為輸入入/輸出出設(shè)備的抽象描述的抽象描述 文件:必文件:必須有一個(gè)由用有一個(gè)由用戶命名的唯一名字,可用于存命名的唯一名字,可用于存儲(chǔ)程程序和數(shù)據(jù),序和數(shù)據(jù),還可用于提高程序的可用于提高程序的設(shè)備無(wú)關(guān)性(獨(dú)立于無(wú)關(guān)性(獨(dú)立于設(shè)備的的類型、臺(tái)號(hào))。型、臺(tái)號(hào))。輸入入輸出系出系統(tǒng):特殊的文件,由操作系:特殊的文件,由操作系統(tǒng)預(yù)先先規(guī)定,如:定,如:CON:控制臺(tái)

3、:控制臺(tái)終端端 PRN:打印機(jī):打印機(jī)合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院410.1 C+語(yǔ)言的輸入語(yǔ)言的輸入/輸出輸出10.1.2 程序中程序中對(duì)文件的操作文件的操作程序程序 外部外部設(shè)備 文件系文件系統(tǒng):操作系:操作系統(tǒng)(operating system)operating system)提供的一系列系提供的一系列系統(tǒng)調(diào)用(用(system callsystem call)接口。)接口。文件文件緩沖區(qū):由操作系沖區(qū):由操作系統(tǒng)設(shè)置置 程序程序設(shè)計(jì)語(yǔ)言的言的輸入入輸出機(jī)制:建立在系出機(jī)制:建立在系統(tǒng)調(diào)用基用基礎(chǔ)上的上的抽象抽象層次更高的機(jī)制(函數(shù)次更高的機(jī)制(函數(shù)庫(kù)、類

4、庫(kù))文件系統(tǒng)文件系統(tǒng)合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院510.1 C+語(yǔ)言的輸入語(yǔ)言的輸入/輸出輸出10.1.2 程序中程序中對(duì)文件的操作文件的操作C+C+語(yǔ)言提供了言提供了流流用于用于讀寫(xiě)文件寫(xiě)文件。接收接收輸出數(shù)據(jù)的地方稱出數(shù)據(jù)的地方稱為目目標(biāo),發(fā)出出輸入數(shù)據(jù)的地方稱入數(shù)據(jù)的地方稱為源源。輸入入輸出操作可以看作是字符序列在源、目出操作可以看作是字符序列在源、目標(biāo)與與對(duì)象之象之間的流的流動(dòng),因而將完成,因而將完成輸入入輸出操作的出操作的類稱稱為流流類。源流源流目目標(biāo)流流 輸入入緩沖區(qū)沖區(qū)(讀)輸出出緩沖區(qū)沖區(qū)(寫(xiě)寫(xiě))流的提取運(yùn)算符流的提取運(yùn)算符 流的插入運(yùn)算符流的插入

5、運(yùn)算符”和和”提取符提取符 在在類istream中定中定義。輸出:向流中插入一個(gè)字符序列,出:向流中插入一個(gè)字符序列,“”插入符插入符 在在類ostream中定中定義。流與物理流與物理設(shè)備的關(guān)的關(guān)聯(lián):鍵盤(pán)、顯示器、示器、四個(gè)四個(gè)預(yù)定定義的流的流對(duì)象:象:cin:標(biāo)準(zhǔn)準(zhǔn)輸入,缺省入,缺省為鍵盤(pán)cout:標(biāo)準(zhǔn)準(zhǔn)輸出,缺省出,缺省為顯示器示器cerr:無(wú)無(wú)緩沖的沖的標(biāo)準(zhǔn)準(zhǔn)錯(cuò)誤輸出,缺省出,缺省為顯示器示器clog:有有緩沖的沖的標(biāo)準(zhǔn)準(zhǔn)錯(cuò)誤輸出,缺省出,缺省為顯示器示器合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1010.2 C+的流類庫(kù)的流類庫(kù)10.2.3 支持文件的流支持文件的流類頭

6、文件:文件:fstream.hiosistreamostreamiostreamstreambuffilebuffstreambaseifstreamofstreamfstream合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1110.2 C+的流類庫(kù)的流類庫(kù)10.2.4 支持字符串的流支持字符串的流類頭文件:文件:strstrea.h 字符串流:在流與字符串之字符串流:在流與字符串之間建立建立連接接iosistreamostreamiostreamstreambufstrstreambufstrstreambaseistrstreamostrstreamstrstream合肥工業(yè)

7、大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1210.3 格式化輸入輸出格式化輸入輸出10.3.1 使用使用ios成成員函數(shù)函數(shù)格式化格式化標(biāo)志字(志字(formatting flag):long x_flag;在在iostream.h中的中的ios類定定義中,中,說(shuō)明了如下的枚明了如下的枚舉:enum /formatting flags skipws =0 x0001,/skip whitespace on input left =0 x0002,/left-adjust output right =0 x0004,/right-adjust output internal =0 x0

8、008,/padding after sign or base indicator dec =0 x0010,/decimal conversion oct =0 x0020,/octal conversion hex =0 x0040,/hexadecimal conversion showbase =0 x0080,/use base indicator on output showpoint =0 x0100,/force decimal point(floating output)uppercase =0 x0200,/upper-case hex output showpos =0

9、x0400,/add+to positive integers scientific =0 x0800,/use 1.2345E2 floating notation fixed =0 x1000,/use 123.45 floating notation unitbuf =0 x2000,/flush all streams after insertion stdio =0 x4000,/flush stdout,stderr after insertion boolalpha =0 x8000 /insert/extract bools as text or numeric ;合肥工業(yè)大學(xué)

10、合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1310.3 格式化輸入輸出格式化輸入輸出10.3.1 使用使用ios成成員函數(shù)函數(shù)0/10/10/10/10/10/10/10/10/10/10/10/10/10/10/1skipwsleftrightdechexshowpointshowposfixedstdiointernaloctshowbaseuppercasescientificunitbuf合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1410.3 格式化輸入輸出格式化輸入輸出10.3.1 使用使用ios成員函數(shù)成員函數(shù)常量名常量名意義意義輸入輸入/輸出輸出skipws

11、若設(shè)置,跳過(guò)輸入中的空白;否則,則不舍去這些空白若設(shè)置,跳過(guò)輸入中的空白;否則,則不舍去這些空白 i left輸出數(shù)據(jù)按輸出域左邊對(duì)齊輸出輸出數(shù)據(jù)按輸出域左邊對(duì)齊輸出oright輸出數(shù)據(jù)按輸出域右邊對(duì)齊輸出輸出數(shù)據(jù)按輸出域右邊對(duì)齊輸出 ointernal輸出數(shù)據(jù)在輸出域中符號(hào)或基指示符左對(duì)齊,數(shù)字右對(duì)齊輸出數(shù)據(jù)在輸出域中符號(hào)或基指示符左對(duì)齊,數(shù)字右對(duì)齊 odec以十進(jìn)制形式顯示數(shù)據(jù)以十進(jìn)制形式顯示數(shù)據(jù) i/ooct以八進(jìn)制形式顯示數(shù)據(jù)以八進(jìn)制形式顯示數(shù)據(jù) i/ohex以十六進(jìn)制形式顯示數(shù)據(jù)以十六進(jìn)制形式顯示數(shù)據(jù) i/oshowbase輸出帶有一個(gè)表示制式的輸出帶有一個(gè)表示制式的“基指示符基指示

12、符”,如對(duì)十六進(jìn)制,將加,如對(duì)十六進(jìn)制,將加上上0 x oshowpoint浮點(diǎn)輸出時(shí)必須帶有一個(gè)小數(shù)點(diǎn)浮點(diǎn)輸出時(shí)必須帶有一個(gè)小數(shù)點(diǎn) ouppercase以大寫(xiě)形式顯示數(shù)據(jù)中的字母以大寫(xiě)形式顯示數(shù)據(jù)中的字母 oshowpos在顯示的正數(shù)前加上一個(gè)在顯示的正數(shù)前加上一個(gè)+oscientific以科學(xué)記數(shù)法顯示浮點(diǎn)數(shù)以科學(xué)記數(shù)法顯示浮點(diǎn)數(shù) ofixed以十進(jìn)制小數(shù)方式顯示浮點(diǎn)數(shù)以十進(jìn)制小數(shù)方式顯示浮點(diǎn)數(shù) ounitbuf在插入操作后立即刷新流的緩沖區(qū)在插入操作后立即刷新流的緩沖區(qū) ostdio在插入操作后刷新在插入操作后刷新stdout和和stderr o合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院

13、計(jì)算機(jī)與信息學(xué)院1510.3 格式化輸入輸出格式化輸入輸出10.3.1 使用使用ios成員函數(shù)成員函數(shù)long flags()設(shè)置標(biāo)志值,并返回以前所設(shè)置的標(biāo)志值設(shè)置標(biāo)志值,并返回以前所設(shè)置的標(biāo)志值flags()僅返回當(dāng)前的標(biāo)志值僅返回當(dāng)前的標(biāo)志值long setf(long,long)用于設(shè)置標(biāo)志字的某一位,第二個(gè)參數(shù)指定所要操作的位,用于設(shè)置標(biāo)志字的某一位,第二個(gè)參數(shù)指定所要操作的位,第一個(gè)參數(shù)指定為該位所設(shè)置的值。第一個(gè)參數(shù)指定為該位所設(shè)置的值。long setf(long)設(shè)置參數(shù)所指定的那些標(biāo)志位設(shè)置參數(shù)所指定的那些標(biāo)志位long unsetf(long)清除參數(shù)指定的標(biāo)志位清除參數(shù)

14、指定的標(biāo)志位int width(int)指定域?qū)?,并返回以前設(shè)置的域?qū)捴付ㄓ驅(qū)?,并返回以前設(shè)置的域?qū)抜nt width()僅返回當(dāng)前域?qū)拑H返回當(dāng)前域?qū)抍har fill(char)設(shè)置填充字符,缺省為空格。函數(shù)返回以前設(shè)置的填充字設(shè)置填充字符,缺省為空格。函數(shù)返回以前設(shè)置的填充字符符char fill()僅返回當(dāng)前的填充字符僅返回當(dāng)前的填充字符int precision(int)設(shè)置小數(shù)點(diǎn)后的數(shù)據(jù)位數(shù),返回以前設(shè)置的位數(shù)設(shè)置小數(shù)點(diǎn)后的數(shù)據(jù)位數(shù),返回以前設(shè)置的位數(shù)int precision()僅返回當(dāng)前的小數(shù)點(diǎn)數(shù)據(jù)位數(shù)僅返回當(dāng)前的小數(shù)點(diǎn)數(shù)據(jù)位數(shù)合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信

15、息學(xué)院1610.3 格式化輸入輸出格式化輸入輸出10.3.1 使用使用ios成成員函數(shù)函數(shù)例:例:/程序:程序:IOS_FMT.cpp/功能:演示利用功能:演示利用ios成成員函數(shù)函數(shù)進(jìn)行格式化行格式化輸出出#include /以二以二進(jìn)制形式制形式輸出當(dāng)前格式控制出當(dāng)前格式控制標(biāo)識(shí)字字flagvoid show_flag(long flag)long mask;/用于屏蔽其他位,取出當(dāng)前位的循用于屏蔽其他位,取出當(dāng)前位的循環(huán)變量量cout=0 x0001;mask=mask1)if(flag&mask)cout1;else cout0;cout)n;return;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)

16、算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1710.3 格式化輸入輸出格式化輸入輸出10.3.1 使用使用ios成成員函數(shù)函數(shù)int main()long f;f=cout.flags();/按缺省方式按缺省方式輸出出show_flag(cout.flags();/取當(dāng)前格式取當(dāng)前格式標(biāo)識(shí)字并以二字并以二進(jìn)制制輸出出cout123n;cout123.456n;/按科學(xué)按科學(xué)記數(shù)法數(shù)法輸出,并在正數(shù)前另加上出,并在正數(shù)前另加上“+”符號(hào)符號(hào)cout.setf(ios:showpos|ios:scientific);show_flag(cout.flags();cout123n;cout123.456n;co

17、ut.unsetf(ios:showpos|ios:scientific);/取消取消剛才才設(shè)置的狀置的狀態(tài)合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1810.3 格式化輸入輸出格式化輸入輸出10.3.1 使用使用ios成成員函數(shù)函數(shù) /強(qiáng)制浮點(diǎn)數(shù)按照定點(diǎn)格式制浮點(diǎn)數(shù)按照定點(diǎn)格式顯示示cout.setf(ios:fixed);show_flag(cout.flags();cout0.001234567n;cout.unsetf(ios:fixed);/按大寫(xiě)的十六按大寫(xiě)的十六進(jìn)制制輸出,并在數(shù)據(jù)前加上十六出,并在數(shù)據(jù)前加上十六進(jìn)制的基制的基“0X cout.setf(ios:h

18、ex|ios:showbase|ios:uppercase);show_flag(cout.flags();cout123n;cout123.456n;cout.unsetf(ios:hex|ios:showbase|ios:uppercase);/設(shè)置置輸出數(shù)據(jù)出數(shù)據(jù)寬度度show_flag(cout.flags();cout;cout.width(15);cout123n;cout123.456n;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1910.3 格式化輸入輸出格式化輸入輸出10.3.1 使用使用ios成成員函數(shù)函數(shù) /設(shè)設(shè)置左置左對(duì)齊對(duì)齊,并且,并且寬寬度不足度不足

19、則則以符號(hào)以符號(hào)“#”填充填充cout.fill(#);cout.setf(ios:left);show_flag(cout.flags();cout;cout.width(15);cout123n;cout123.456n;cout.unsetf(ios:left);/設(shè)設(shè)置符號(hào)位左置符號(hào)位左對(duì)齊對(duì)齊,數(shù),數(shù)值值右右對(duì)齊對(duì)齊,寬寬度不足以空格填充度不足以空格填充cout.fill();cout.setf(f);cout.setf(ios:internal);show_flag(cout.flags();cout;cout.width(15);cout-123n;cout.unsetf(ios

20、:internal);合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2010.3 格式化輸入輸出格式化輸入輸出10.3.1 使用使用ios成成員函數(shù)函數(shù) /設(shè)設(shè)置置輸輸出精度出精度為為小數(shù)點(diǎn)后兩位數(shù)字小數(shù)點(diǎn)后兩位數(shù)字cout.setf(ios:fixed);show_flag(cout.flags();cout123n;cout.precision(2);cout123.456n;return 0;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2110.3 格式化輸入輸出格式化輸入輸出10.3.2 使用使用輸入入輸出操出操縱符符 操操縱符(符(manipulator):

21、特殊的函數(shù),可直接包含在):特殊的函數(shù),可直接包含在輸入入/輸出表達(dá)式中。出表達(dá)式中。不不帶形式參數(shù)的操形式參數(shù)的操縱符定符定義在在 iostream.h 中中 帶形式參數(shù)的操形式參數(shù)的操縱符定符定義在在 iomanip.h 中中 合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2210.3 格式化輸入輸出格式化輸入輸出10.3.2 使用輸入輸出操縱符使用輸入輸出操縱符 操縱符操縱符功能功能輸入輸入/輸出輸出dec格式為十進(jìn)制數(shù)據(jù)格式為十進(jìn)制數(shù)據(jù)i/ohex格式為十六進(jìn)制數(shù)據(jù)格式為十六進(jìn)制數(shù)據(jù)i/ooct格式為八進(jìn)制數(shù)據(jù)格式為八進(jìn)制數(shù)據(jù)i/osetbase(int n)設(shè)置數(shù)據(jù)的基為

22、設(shè)置數(shù)據(jù)的基為n(n為為0、8、10、16),),0表示使用表示使用缺省值缺省值osetioflags(long)設(shè)置特定的標(biāo)志位設(shè)置特定的標(biāo)志位i/oresetiosflags(long)清除特定的標(biāo)志位清除特定的標(biāo)志位i/ows設(shè)置跳過(guò)輸入中的前導(dǎo)空白字符設(shè)置跳過(guò)輸入中的前導(dǎo)空白字符Isetw(int)設(shè)置域?qū)捲O(shè)置域?qū)抩setprecision(int)設(shè)置浮點(diǎn)輸出的有效數(shù)字個(gè)數(shù)設(shè)置浮點(diǎn)輸出的有效數(shù)字個(gè)數(shù)osetfill(int)設(shè)置填充字符設(shè)置填充字符oendl插入一個(gè)換行符并刷新此流插入一個(gè)換行符并刷新此流oends插入一個(gè)空字符插入一個(gè)空字符oflush刷新流刷新流o合肥工業(yè)大學(xué)合肥

23、工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2310.3 格式化輸入輸出格式化輸入輸出10.3.2 使用使用輸入入輸出操出操縱符符#include#include int main()char input_string250;/按大寫(xiě)十六按大寫(xiě)十六進(jìn)制制輸出出coutsetiosflags(ios:uppercase)hex123decendl;/輸出浮點(diǎn)數(shù)的精度出浮點(diǎn)數(shù)的精度為小數(shù)點(diǎn)后兩位小數(shù)點(diǎn)后兩位coutsetprecision(5)123.456endl;/輸出的字符串的出的字符串的寬度度為15coutsetw(15)Helloendl;/以以“*”填充填充寬度度為15 的數(shù)據(jù)空白的數(shù)據(jù)

24、空白處coutsetw(15)setfill(*)10000endl;/忽略忽略輸入之前的空白入之前的空白coutwsinput_string;coutinput_stringendl;return 0;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2410.3 格式化輸入輸出格式化輸入輸出10.3.3 格式化格式化輸入入/輸出到字符串出到字符串字符串作字符串作為輸入流:入流:創(chuàng)建建 istrstream 對(duì)象象/程序:程序:IN_STR.CPP/功能:將字符串的內(nèi)容作功能:將字符串的內(nèi)容作為輸入流入流#includeint main()char str=1234;istrstre

25、am buffer1(str);/將整個(gè)字符串作將整個(gè)字符串作為輸入流入流istrstream buffer2(str,2);/將字符串前兩個(gè)字符作將字符串前兩個(gè)字符作為輸入流入流int i,j;buffer1i;buffer2j;couti+jendl;return 0;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2510.3 格式化輸入輸出格式化輸入輸出10.3.3 格式化格式化輸入入/輸出到字符串出到字符串字符串作字符串作為輸出流:出流:創(chuàng)建建 ostrstream 對(duì)象象/程序:程序:out_STR.CPP/功能:將數(shù)據(jù)格式化功能:將數(shù)據(jù)格式化輸出到字符串中出到字符串中#

26、include#includeint main()ostrstream buffer;char*str;/將數(shù)據(jù)格式化將數(shù)據(jù)格式化輸出到出到輸出流出流buffer,注意字符串,注意字符串結(jié)束符束符0buffer Salary is setw(10)setfill($)725.5ends;/輸出的出的結(jié)果用果用buffer.str()來(lái)來(lái)訪問(wèn)str=buffer.str();coutstrendl;return 0;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2610.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.1 put成成員函數(shù)函數(shù)ostream類和和istream

27、類提供的成提供的成員函數(shù)函數(shù)輸出:出:put、write輸出:出:get、read、gcount、getline、peek、putback、ignore可可實(shí)現(xiàn)無(wú)格式的無(wú)格式的輸入入/輸出出cout.put(char)例:例:cout.put(A);cout.put(65);cout.put(A.put(n);cout.put(A).put(n);合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2710.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.2 write成成員函數(shù)函數(shù)cout.write(char*,int)例:例:char buffer=“HAPPY BIRTH

28、DAY”cout.write(buffer,10);10.4.3 read和和gcount成成員函數(shù)函數(shù)cin.read(char*,int)將指定數(shù)量的字符將指定數(shù)量的字符輸入到內(nèi)存中的字符數(shù)入到內(nèi)存中的字符數(shù)組int cin.gcount(void)返回最后一次返回最后一次輸入操作入操作讀取的字符數(shù)取的字符數(shù)合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2810.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.3 read和和gcount成成員函數(shù)函數(shù)/程序:程序:UN_FMT.CPP/功能:用功能:用write、read和和gcount成成員函數(shù)函數(shù)實(shí)現(xiàn)無(wú)格式無(wú)格式輸

29、入入輸出出#includeint main()const int SIZE=80;char bufferSIZE=Enter a sentence:;coutbufferendl;cin.read(buffer,20);coutendl The sentence entered was:endl;cout.write(buffer,cin.gcount();coutendl;return 0;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院2910.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.4 get成成員函數(shù)函數(shù) istream.h中中g(shù)et原型原型 int get(

30、);/從從輸入流中入流中讀入一個(gè)字符,返回入一個(gè)字符,返回該字符作字符作為函數(shù)函數(shù)調(diào)用用值,遇到文件遇到文件結(jié)束符,返回束符,返回EOF EOF:文件:文件結(jié)束符,束符,為符號(hào)常量,符號(hào)常量,值為-1 istream&get(char&);/從指定從指定輸入流中入流中讀入一個(gè)字符,入一個(gè)字符,賦給字符字符變量量ch,遇到文件,遇到文件結(jié)束符,返回束符,返回0 inline istream&get(unsigned char&);inline istream&get(signed char&);inline istream&get(char*,int,char=n);/從指定從指定輸入流中入流中

31、讀int個(gè)字符,函數(shù)在個(gè)字符,函數(shù)在讀到比到比int少一個(gè)字符或遇到字符少一個(gè)字符或遇到字符char為止(止(char缺省缺省為n),并),并補(bǔ)上字符串上字符串結(jié)束符束符0。inline istream&get(unsigned char*,int,char=n);inline istream&get(signed char*,int,char=n);合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院3010.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.4 get成成員函數(shù)函數(shù)/程序:程序:GET.CPP/功能:演示功能:演示get函數(shù)的幾種用法函數(shù)的幾種用法#includ

32、e int main()const int SIZE=80;char ch;int character;char buffer1SIZE,buffer2SIZE;/用不用不帶帶參數(shù)的參數(shù)的get函數(shù)函數(shù)輸輸入字符,以文件入字符,以文件結(jié)結(jié)束符束符終終止,并用止,并用put函數(shù)函數(shù)輸輸出出cout Enter a sentence follwed by end-of-file:endl;while(character=cin.get()!=EOF)cout.put(char)character);cout EOF in this sysytem is:characterendl;cout Aft

33、er input,cin.eof()is:cin.eof()endlendl;cin.clear();/清除清除輸輸入流不正常入流不正常標(biāo)記標(biāo)記 合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院3110.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.4 get成成員函數(shù)函數(shù) /使用使用get(ch)函數(shù)函數(shù)輸輸入,以文件入,以文件結(jié)結(jié)束符束符終終止,用止,用put(ch)輸輸出出cout Enter a sentence with get(ch)and output pur(ch):n;while(cin.get(ch)cout.put(ch);cin.clear();/用

34、用cin讀讀取字符流,存入取字符流,存入buffer1,直到遇到空白字符,直到遇到空白字符為為止止cout nEnter a sentence:buffer1;coutn The string read with cin was:endlbuffer1endlendl;/用用帶帶3個(gè)參數(shù)的個(gè)參數(shù)的get函數(shù)從函數(shù)從輸輸入流中入流中讀讀取字符取字符cin.get(buffer2,SIZE);/此此處處未指明分隔符,使用默未指明分隔符,使用默認(rèn)認(rèn)的的n字符字符coutThe string read with cin.get was:endlbuffer2endl;return 0;合肥工業(yè)大學(xué)合肥

35、工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院3210.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.4 get成成員函數(shù)函數(shù) cin.eof()到達(dá)文件末尾(即到達(dá)文件末尾(即讀到文件到文件結(jié)束符)返回非束符)返回非0值,否否則返回返回0;cin.clear()在在讀入入輸入流入流時(shí),讀到文件到文件結(jié)束符或束符或讀入非正常字入非正常字符(例如在整數(shù)符(例如在整數(shù)輸入入時(shí)遇到了非數(shù)字字符)遇到了非數(shù)字字符)時(shí),輸入流入流標(biāo)記置置為非非0(表示不正常),(表示不正常),clear()函數(shù)用于清除函數(shù)用于清除輸入流的入流的“不正常不正常”標(biāo)記。cin 用用cin讀取字符流取字符流時(shí),當(dāng)遇到第

36、一個(gè)空白符,當(dāng)遇到第一個(gè)空白符時(shí),認(rèn)為輸入入結(jié)束,并束,并補(bǔ)上字符串上字符串結(jié)束符束符0。合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院3310.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.5 getline成成員函數(shù)函數(shù) inline istream&getline(char*,int,char=n);/從指定從指定輸入流中入流中讀int個(gè)字符,函數(shù)在個(gè)字符,函數(shù)在讀到比到比int少一個(gè)字符少一個(gè)字符或遇到字符或遇到字符char為止(止(char缺省缺省為n),并),并補(bǔ)上字符串上字符串結(jié)束符束符0。與。與帶3個(gè)參數(shù)個(gè)參數(shù)get成成員函數(shù)不同的是函數(shù)不同的是gelin

37、e 要從要從輸入入流中流中刪除分隔符(即除分隔符(即讀取并取并刪除它),而并不是把它存放在除它),而并不是把它存放在buffer中。中。inline istream&getline(unsigned char*,int,char=n);inline istream&getline(signed char*,int,char=n);合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院3410.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.5 getline成成員函數(shù)函數(shù) /程序:程序:GETLINE.CPP/功能:演示功能:演示getline函數(shù)的用法函數(shù)的用法#include

38、int main()const int SIZE=80;char bufferSIZE;cout Enter a sentence:buffer;coutn The string read with cin is:endlbufferendlendl;/用用getline函數(shù)函數(shù)讀入入19個(gè)字符,或遇個(gè)字符,或遇/終止止cin.getline(buffer,20,/);cout The second part is:n;coutbufferendlendl;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院3510.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.5 getli

39、ne成成員函數(shù)函數(shù) /用用getline函數(shù)函數(shù)讀入入19個(gè)字符,或遇個(gè)字符,或遇n終止止cin.getline(buffer,20,n);cout The third part is:n;coutbufferendlendl;/用用get函數(shù)函數(shù)讀入入19個(gè)字符,或遇個(gè)字符,或遇/終止止cin.get(buffer,20,/);cout The forth part is:n;coutbufferendlendl;cout.put(char)cin.get();/此此時(shí)/還在在輸入流中,用入流中,用get()讀出并用出并用put輸出出coutendl;return 0;合肥工業(yè)大學(xué)合肥工業(yè)大

40、學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院3610.4 常用成員函數(shù)輸入常用成員函數(shù)輸入/輸出輸出10.4.6 peek、putback、ignore成成員函數(shù)函數(shù) cin.peek()返回返回輸入流下一個(gè)字符,但并不將其從入流下一個(gè)字符,但并不將其從輸入流中入流中刪除。除。調(diào)用:用:ch=cin.peek();/ch是整型是整型變量量 cin.putpack(ch)將字符將字符變量量ch中字符放回中字符放回輸入流中。入流中。cin.ignore(n,ch)跳跳過(guò)輸入流中入流中n個(gè)字符,或遇到個(gè)字符,或遇到ch中指定的中指定的終止字符止字符時(shí)結(jié)束。束。n 缺省缺省為1,ch 缺省缺省為EOF。合肥工

41、業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院3710.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作10.5.1 重重載流的插入運(yùn)算符流的插入運(yùn)算符 class COMPLEX private:public:friend ostream&operator (ostream&stream,COMPLEX&c);ostream&operator (ostream&stream,COMPLEX&c)stream(c.Real0)?+:)c.Imag(istream&stream,COMPLEX&c);istream&operator (istream&stream,COMPLEX&c)c

42、outc.Real;coutc.Imag;return stream;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院3910.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作10.5.3 實(shí)例例#include#include math.h#include conio.hclass COMPLEX private:double Real;double Imag;public:COMPLEX();COMPLEX(const COMPLEX&c);COMPLEX(double r,double i=0);void operator=(COMPLEX&d);friend double

43、abs(COMPLEX&c);合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4010.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作10.5.3 實(shí)例例 friend COMPLEX conj(COMPLEX&c);friend COMPLEX operator+(COMPLEX c1,COMPLEX c2);friend COMPLEX operator-(COMPLEX c1,COMPLEX c2);friend COMPLEX operator*(COMPLEX c1,COMPLEX c2);friend COMPLEX operator/(COMPLEX c1,COMP

44、LEX c2);friend int operator=(COMPLEX&c1,COMPLEX&c2);friend int operator!=(COMPLEX&c1,COMPLEX&c2);friend ostream&operator (istream&stream,COMPLEX&c);合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4110.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作10.5.3 實(shí)例例 COMPLEX:COMPLEX()Real=0.0;Imag=0.0;COMPLEX:COMPLEX(const COMPLEX&c)Real=c.Real;Ima

45、g=c.Imag;COMPLEX:COMPLEX(double r,double i)Real=r;Imag=i;void COMPLEX:operator=(COMPLEX&d)Real=d.Real;Imag=d.Imag;double abs(COMPLEX&c)return sqrt(c.Real*c.Real+c.Imag*c.Imag);合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4210.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作10.5.3 實(shí)例例 COMPLEX conj(COMPLEX&c)COMPLEX temp;temp.Real=c.Real;t

46、emp.Imag=-c.Imag;return temp;COMPLEX operator+(COMPLEX c1,COMPLEX c2)COMPLEX temp;temp.Real=c1.Real+c2.Real;temp.Imag=c1.Imag+c2.Imag;return temp;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4310.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作10.5.3 實(shí)例例 COMPLEX operator-(COMPLEX c1,COMPLEX c2)COMPLEX temp;temp.Real=c1.Real-c2.Real;temp.

47、Imag=c1.Imag-c2.Imag;return temp;COMPLEX operator*(COMPLEX c1,COMPLEX c2)COMPLEX temp;temp.Real=c1.Real*c2.Real-c1.Imag*c2.Imag;temp.Imag=c1.Real*c2.Imag+c1.Imag*c2.Real;return temp;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4410.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作10.5.3 實(shí)例例 int operator=(COMPLEX&c1,COMPLEX&c2)return(c1.Re

48、al=c2.Real)&(c1.Imag=c2.Imag);int operator!=(COMPLEX&c1,COMPLEX&c2)return(c1.Real!=c2.Real)|(c1.Imag!=c2.Imag);COMPLEX operator/(COMPLEX c1,COMPLEX c2)COMPLEX temp;double den;den=abs(c2)*abs(c2);temp.Real=(c1.Real*c2.Real+c1.Imag*c2.Imag)/den;temp.Imag=(c1.Imag*c2.Real-c1.Real*c2.Imag)/den;return te

49、mp;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4510.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作10.5.3 實(shí)例例 ostream&operator (ostream&stream,COMPLEX&c)stream(c.Real0)?+:)c.Imag(istream&stream,COMPLEX&c)coutc.Real;coutc.Imag;return stream;合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4610.5.3 實(shí)例例void main()COMPLEX a,b,c;double x=10.0;cout Input the fi

50、rst complex a:a;cout Input the second complex b:b;c=conj(a);couta c bendl;c=a+b;coutc ;c=a-b;coutc ;c=a*b;coutc ;c=a/b;coutcendl;c=a+x;coutc ;c=a-x;coutc ;c=a*x;coutc ;c=a/x;coutcendl;c=x+a;coutc ;c=x-a;coutc ;c=x*a;coutc ;c=x/a;coutcendl;cout(a=c)endl;cout(a!=c)endl;getch();10.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作

51、輸出操作合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4710.5.4 設(shè)計(jì)自己的自己的輸入入/輸出操出操縱符符輸出操出操縱符定符定義形式:形式:ostream&操操縱符名字符名字(ostream&stream)自定自定義操操縱符代符代碼 return stream;兩種情況需兩種情況需設(shè)計(jì)操操縱符函數(shù)符函數(shù):n 為新新設(shè)備定定義操操縱符使得向新符使得向新設(shè)備輸出更方便;出更方便;n 需要重復(fù)使用的操作序列需要重復(fù)使用的操作序列組合定合定義在新操在新操縱符中。符中。操操縱符用于符用于輸出操作且不出操作且不帶參數(shù)參數(shù)時(shí),即便空,即便空?qǐng)A括號(hào)括號(hào)對(duì)也不能出也不能出現(xiàn)。10.5 設(shè)計(jì)自己

52、的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4810.5.4 設(shè)計(jì)自己的自己的輸入入/輸出操出操縱符符#include#include ostream&dollar_format(ostream&stream)/定制自己的定制自己的輸出操出操縱符符1stream.setf(ios:left);streamsetw(12)setprecision(2)setfill($);return stream;ostream&tab(ostream&stream)/定制自己的定制自己的輸出操出操縱符符2return streamt;int main()c

53、out725.5endl;coutdollar_format725.5endl;coutatabbtabcendl;return 0;10.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院4910.5.4 設(shè)計(jì)自己的自己的輸入入/輸出操出操縱符符輸入操入操縱符定符定義形式:形式:istream&操操縱符名字符名字(istream&stream)自定自定義操操縱符代符代碼 return stream;#include istream&prompt(istream&stream)/定制自己的定制自己的輸入操入操縱符符couthex;ret

54、urn stream;int main()int input;cinpromptinput;coutinputendl;return 0;10.5 設(shè)計(jì)自己的輸入設(shè)計(jì)自己的輸入/輸出操作輸出操作合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院50流狀流狀態(tài)標(biāo)志字志字enum io_state goodbit=0 x00,/不不設(shè)置任何位,一切正常置任何位,一切正常 eofbit=0 x01,/輸入流已入流已經(jīng)結(jié)束,無(wú)字符可束,無(wú)字符可讀入入 failbit=0 x02,/上次上次讀寫(xiě)操作失寫(xiě)操作失敗,但流仍可使用,但流仍可使用 badbit=0 x04,/試圖作無(wú)效的作無(wú)效的讀/寫(xiě)操

55、作,流不再可用寫(xiě)操作,流不再可用 hardfail=0 x80 /不可恢復(fù)的不可恢復(fù)的嚴(yán)重重錯(cuò)誤;ios類提供的提供的檢測(cè)或或設(shè)置流狀置流狀態(tài)的成的成員函數(shù):函數(shù):int rdstate();/返回流的當(dāng)前狀返回流的當(dāng)前狀態(tài)標(biāo)識(shí)字字 int eof();/返回非返回非0值表示到達(dá)文件尾表示到達(dá)文件尾 int fail();/返回非返回非0值表示操作失表示操作失敗 int bad();/返回非返回非0值表示出表示出現(xiàn)錯(cuò)誤 int good();/返回非返回非0值表示流操作正常表示流操作正常 int clear(int flag=0);/將流的狀將流的狀態(tài)設(shè)置置為flag10.6 檢測(cè)流操作的錯(cuò)誤

56、檢測(cè)流操作的錯(cuò)誤合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5110.7 文件流文件流讀寫(xiě)寫(xiě)文件的文件的過(guò)程:程:o往(文件)流往(文件)流中中插入一個(gè)字符;插入一個(gè)字符;o從(文件)流中提取一個(gè)字符;從(文件)流中提取一個(gè)字符;o打開(kāi)文件并打開(kāi)文件并獲得文件句柄(建立文件與流得文件句柄(建立文件與流連接)接)打開(kāi)一個(gè)文件流打開(kāi)一個(gè)文件流,以便用來(lái),以便用來(lái)讀和寫(xiě)。使用完后,需和寫(xiě)。使用完后,需要要關(guān)關(guān)閉該文件流文件流。o#include ftream.h合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5210.7.1 文件的打開(kāi)與關(guān)文件的打開(kāi)與關(guān)閉C+的三種文件流的三

57、種文件流n輸入文件流:入文件流:類 ifstreamn輸出文件流:出文件流:類 ofstreamn輸入入/輸出文件流:出文件流:類 fstream 例:例:創(chuàng)建文件流建文件流對(duì)象象#include void main()/建立不同的文件流建立不同的文件流 ifstream in;/input file stream只能只能讀ofstream out;/output file stream只能寫(xiě)只能寫(xiě)fstream both;/I/O file stream10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5310.7.1 文件的打開(kāi)與關(guān)文件的打開(kāi)與關(guān)閉1.使用函數(shù)

58、使用函數(shù) open()打開(kāi)文件打開(kāi)文件open()的函數(shù)原型:的函數(shù)原型:void open(const char*filename,int mode,int prot=filebuf:openprot);nfilename:文件名字,可含路徑:文件名字,可含路徑nmode:文件的打開(kāi)模式:文件的打開(kāi)模式nprot:文件的:文件的訪問(wèn)方式:方式:普通(普通(0)、只)、只讀(1)、)、隱藏藏(2)、系)、系統(tǒng)文件(文件(4)。)。一般使用缺省一般使用缺省值0。10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5410.7.1 文件的打開(kāi)與關(guān)文件的打開(kāi)與關(guān)閉文件打開(kāi)

59、模式文件打開(kāi)模式mode ios類中定中定義了一了一組枚枚舉常量描述常量描述這些模式:些模式:enum open_mode in =0 x01,/打開(kāi)文件打開(kāi)文件進(jìn)行行讀操作操作 out =0 x02,/打開(kāi)文件打開(kāi)文件進(jìn)行寫(xiě)操作行寫(xiě)操作 ate =0 x04,/打開(kāi)打開(kāi)時(shí)文件指文件指針定位到文件尾(定位到文件尾(at end)app =0 x08,/添加模式:所有增加都在文件尾部添加模式:所有增加都在文件尾部(append)trunc =0 x10,/如果文件已存在如果文件已存在則清空原文件清空原文件 nocreate =0 x20 /如果文件不存在如果文件不存在則打開(kāi)失打開(kāi)失敗 norep

60、lace=0 x40,/如果文件存在如果文件存在則打開(kāi)失打開(kāi)失敗 binary =0 x80 /二二進(jìn)制文件制文件 ;10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5510.7.1 文件的打開(kāi)與關(guān)文件的打開(kāi)與關(guān)閉oifstream類中,中,open()的的mode參數(shù)缺省參數(shù)缺省值是是ios:inoofstream類中,中,open()的的mode參數(shù)缺省參數(shù)缺省值是是ios:outo缺省方式下,文件以文本方式打開(kāi)缺省方式下,文件以文本方式打開(kāi)omode參數(shù)用位或運(yùn)算參數(shù)用位或運(yùn)算|組合枚合枚舉常量常量ofstreamofile;ofile.open(“tes

61、t.bak”,ios:out|ios:binary);/以二以二進(jìn)制形式打開(kāi)當(dāng)前目制形式打開(kāi)當(dāng)前目錄下的下的test.bak文件,準(zhǔn)文件,準(zhǔn)備進(jìn)行行寫(xiě)操作寫(xiě)操作 10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5610.7.1 文件的打開(kāi)與關(guān)文件的打開(kāi)與關(guān)閉ofstreamofile;/創(chuàng)建一個(gè)建一個(gè)輸出文件流出文件流ofile.open(“text.txt”);/打開(kāi)文本文件打開(kāi)文本文件text.txt,使,使ofile流與流與該文文件相關(guān)件相關(guān)聯(lián)/寫(xiě)文件寫(xiě)文件text.txtofile.close();/關(guān)關(guān)閉text.txt文件文件ofile.open(“

62、other.txt”);/使使ofile流與另一文件流與另一文件other.txt相關(guān)相關(guān)聯(lián):重用流重用流/寫(xiě)文件寫(xiě)文件other.txtofile.close();/關(guān)關(guān)閉other.txt文件文件10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5710.7.1 文件的打開(kāi)與關(guān)文件的打開(kāi)與關(guān)閉2.通通過(guò)流流類的構(gòu)造函數(shù)打開(kāi)文件的構(gòu)造函數(shù)打開(kāi)文件在在創(chuàng)建流建流時(shí)調(diào)用構(gòu)造函數(shù)直接與某文件相關(guān)用構(gòu)造函數(shù)直接與某文件相關(guān)聯(lián)ofstream ofile(“text.txt”);/創(chuàng)建一個(gè)建一個(gè)輸出文件流出文件流ofile,打開(kāi)文件,打開(kāi)文件text.txt,使,使ofi

63、le流與流與該文文件相關(guān)件相關(guān)聯(lián)/寫(xiě)文件寫(xiě)文件text.txtofile.close();/關(guān)關(guān)閉text.txt文件文件流流類的構(gòu)造函數(shù)的參數(shù)和缺省的構(gòu)造函數(shù)的參數(shù)和缺省值與與openopen函數(shù)相同,用于在函數(shù)相同,用于在創(chuàng)建建一個(gè)流一個(gè)流時(shí)就使它與某個(gè)文件相關(guān)就使它與某個(gè)文件相關(guān)聯(lián)10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5810.7.1 文件的打開(kāi)與關(guān)文件的打開(kāi)與關(guān)閉 打開(kāi)文件失打開(kāi)文件失敗,流狀,流狀態(tài)標(biāo)識(shí)字中的字中的faibit、badbit或或hardbit將被置將被置為1,并且在,并且在ios類中重中重載的的“!”運(yùn)算符返回非運(yùn)算符返回非0

64、值。異常模式異常模式處理方式:理方式:ifstream input_file(“D:VCmydata.txt”)if(!Input_file)警告打開(kāi)文件失警告打開(kāi)文件失敗;退出程序退出程序;繼續(xù)正常的文件操作正常的文件操作;10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5910.7.2 文本文件的操作文本文件的操作例例1:把一個(gè)整數(shù)、一個(gè)浮點(diǎn)數(shù)和一個(gè)字符串寫(xiě)到名:把一個(gè)整數(shù)、一個(gè)浮點(diǎn)數(shù)和一個(gè)字符串寫(xiě)到名為out.txt的文的文本文件中本文件中#include int main()ofstream outfile;float f=123.23;int n=10

65、;outfile.open(out.txt);if(!outfile)coutCannot open out.txt for output!n;return 1;/返回返回1表示打開(kāi)文件不成功表示打開(kāi)文件不成功outfile n f n;outfileThis is a text file;outfile.close();return 0;10.7 文件流文件流程序執(zhí)行后,在當(dāng)前目錄下生程序執(zhí)行后,在當(dāng)前目錄下生成文件成文件out.Txt,文件內(nèi)容如下:文件內(nèi)容如下:10 123.230003 This is a text file合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院60

66、10.7.2 文本文件的操作文本文件的操作例例2:從例從例1程序建立的文件中程序建立的文件中讀入相關(guān)數(shù)據(jù)入相關(guān)數(shù)據(jù)#include#include int main()ifstream infile;infile.open(out.txt);if(!infile)cout n f ch str;cout n f ch n;cout str 運(yùn)算符號(hào)跳過(guò)空白符號(hào)(如空運(yùn)算符號(hào)跳過(guò)空白符號(hào)(如空格,回車(chē)),然后讀入對(duì)應(yīng)于輸入對(duì)象類型的格,回車(chē)),然后讀入對(duì)應(yīng)于輸入對(duì)象類型的字符字符合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院6110.7.2 文本文件的操作文本文件的操作例例3:文件拷:文件拷貝#include#include int CopyFile(char*file_from,char*file_to)/file_from:輸入文件名入文件名(源文件源文件);file_to:輸出文件名出文件名(目目標(biāo)文件文件)char ch;/文件不存在文件不存在則打開(kāi)失打開(kāi)失敗ifstream from(file_from,ios:in|ios:nocreate);/以文本方式打開(kāi)以文

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!