程序設(shè)計(jì)基礎(chǔ):10第十章 C++的輸入輸出
《程序設(shè)計(jì)基礎(chǔ):10第十章 C++的輸入輸出》由會(huì)員分享,可在線閱讀,更多相關(guān)《程序設(shè)計(jì)基礎(chǔ):10第十章 C++的輸入輸出(79頁珍藏版)》請?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+語言的輸入語言的輸入/輸出輸出10.1.1 外部外部設(shè)備與文件與文件外部外部設(shè)備:n存存儲(chǔ)設(shè)備:存:存儲(chǔ)信息,信息,塊設(shè)備(字符(字符塊)介介質(zhì):硬:硬盤、軟盤、磁、磁帶、光、光盤、組織:文件:文件n輸入入/輸出出設(shè)備:輸入入/輸出信息,字符出信息,字符設(shè)備 輸入:入:鍵盤、鼠、鼠標(biāo)、掃描描儀、輸出:出:顯示器、打印機(jī)、示器、打印機(jī)、繪圖儀、合肥工
2、業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院310.1 C+語言的輸入語言的輸入/輸出輸出10.1.1 外部外部設(shè)備與文件與文件文件(文件(file):):n作作為輸入入/輸出的出的對(duì)象象n與外部與外部設(shè)備之之間建立關(guān)建立關(guān)聯(lián),作,作為輸入入/輸出出設(shè)備的抽象描述的抽象描述 文件:必文件:必須有一個(gè)由用有一個(gè)由用戶命名的唯一名字,可用于存命名的唯一名字,可用于存儲(chǔ)程程序和數(shù)據(jù),序和數(shù)據(jù),還可用于提高程序的可用于提高程序的設(shè)備無關(guān)性(獨(dú)立于無關(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+語言的輸入語言的輸入/輸出輸出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ì)語言的言的輸入入輸出機(jī)制:建立在系出機(jī)制:建立在系統(tǒng)調(diào)用基用基礎(chǔ)上的上的抽象抽象層次更高的機(jī)制(函數(shù)次更高的機(jī)制(函數(shù)庫、類
4、庫)文件系統(tǒng)文件系統(tǒng)合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院510.1 C+語言的輸入語言的輸入/輸出輸出10.1.2 程序中程序中對(duì)文件的操作文件的操作C+C+語言提供了言提供了流流用于用于讀寫文件寫文件。接收接收輸出數(shù)據(jù)的地方稱出數(shù)據(jù)的地方稱為目目標(biāo),發(fā)出出輸入數(shù)據(jù)的地方稱入數(shù)據(jù)的地方稱為源源。輸入入輸出操作可以看作是字符序列在源、目出操作可以看作是字符序列在源、目標(biāo)與與對(duì)象之象之間的流的流動(dòng),因而將完成,因而將完成輸入入輸出操作的出操作的類稱稱為流流類。源流源流目目標(biāo)流流 輸入入緩沖區(qū)沖區(qū)(讀)輸出出緩沖區(qū)沖區(qū)(寫寫)流的提取運(yùn)算符流的提取運(yùn)算符 流的插入運(yùn)算符流的插入
5、運(yùn)算符”和和”提取符提取符 在在類istream中定中定義。輸出:向流中插入一個(gè)字符序列,出:向流中插入一個(gè)字符序列,“”插入符插入符 在在類ostream中定中定義。流與物理流與物理設(shè)備的關(guān)的關(guān)聯(lián):鍵盤、顯示器、示器、四個(gè)四個(gè)預(yù)定定義的流的流對(duì)象:象:cin:標(biāo)準(zhǔn)準(zhǔn)輸入,缺省入,缺省為鍵盤cout:標(biāo)準(zhǔn)準(zhǔn)輸出,缺省出,缺省為顯示器示器cerr:無無緩沖的沖的標(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+的流類庫的流類庫10.2.3 支持文件的流支持文件的流類頭
6、文件:文件:fstream.hiosistreamostreamiostreamstreambuffilebuffstreambaseifstreamofstreamfstream合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院1110.2 C+的流類庫的流類庫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類定定義中,中,說明了如下的枚明了如下的枚舉: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è)置,跳過輸入中的空白;否則,則不舍去這些空白若設(shè)置,跳過輸入中的空白;否則,則不舍去這些空白 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以大寫形式顯示數(shù)據(jù)中的字母以大寫形式顯示數(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);/按大寫的十六按大寫的十六進(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è)置跳過輸入中的前導(dǎo)空白字符設(shè)置跳過輸入中的前導(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;/按大寫十六按大寫十六進(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()來來訪問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)無格式的無格式的輸入入/輸出出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)無格式無格式輸
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)跳跳過輸入流中入流中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í),即便空,即便空圓括號(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é)束,無字符可束,無字符可讀入入 failbit=0 x02,/上次上次讀寫操作失寫操作失敗,但流仍可使用,但流仍可使用 badbit=0 x04,/試圖作無效的作無效的讀/寫操
55、作,流不再可用寫操作,流不再可用 hardfail=0 x80 /不可恢復(fù)的不可恢復(fù)的嚴(yán)重重錯(cuò)誤;ios類提供的提供的檢測或或設(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 檢測流操作的錯(cuò)誤
56、檢測流操作的錯(cuò)誤合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5110.7 文件流文件流讀寫寫文件的文件的過程:程:o往(文件)流往(文件)流中中插入一個(gè)字符;插入一個(gè)字符;o從(文件)流中提取一個(gè)字符;從(文件)流中提取一個(gè)字符;o打開文件并打開文件并獲得文件句柄(建立文件與流得文件句柄(建立文件與流連接)接)打開一個(gè)文件流打開一個(gè)文件流,以便用來,以便用來讀和寫。使用完后,需和寫。使用完后,需要要關(guān)關(guān)閉該文件流文件流。o#include ftream.h合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5210.7.1 文件的打開與關(guān)文件的打開與關(guān)閉C+的三種文件流的三
57、種文件流n輸入文件流:入文件流:類 ifstreamn輸出文件流:出文件流:類 ofstreamn輸入入/輸出文件流:出文件流:類 fstream 例:例:創(chuàng)建文件流建文件流對(duì)象象#include void main()/建立不同的文件流建立不同的文件流 ifstream in;/input file stream只能只能讀ofstream out;/output file stream只能寫只能寫fstream both;/I/O file stream10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5310.7.1 文件的打開與關(guān)文件的打開與關(guān)閉1.使用函數(shù)
58、使用函數(shù) open()打開文件打開文件open()的函數(shù)原型:的函數(shù)原型:void open(const char*filename,int mode,int prot=filebuf:openprot);nfilename:文件名字,可含路徑:文件名字,可含路徑nmode:文件的打開模式:文件的打開模式nprot:文件的:文件的訪問方式:方式:普通(普通(0)、只)、只讀(1)、)、隱藏藏(2)、系)、系統(tǒng)文件(文件(4)。)。一般使用缺省一般使用缺省值0。10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5410.7.1 文件的打開與關(guān)文件的打開與關(guān)閉文件打開
59、模式文件打開模式mode ios類中定中定義了一了一組枚枚舉常量描述常量描述這些模式:些模式:enum open_mode in =0 x01,/打開文件打開文件進(jìn)行行讀操作操作 out =0 x02,/打開文件打開文件進(jìn)行寫操作行寫操作 ate =0 x04,/打開打開時(shí)文件指文件指針定位到文件尾(定位到文件尾(at end)app =0 x08,/添加模式:所有增加都在文件尾部添加模式:所有增加都在文件尾部(append)trunc =0 x10,/如果文件已存在如果文件已存在則清空原文件清空原文件 nocreate =0 x20 /如果文件不存在如果文件不存在則打開失打開失敗 norep
60、lace=0 x40,/如果文件存在如果文件存在則打開失打開失敗 binary =0 x80 /二二進(jìn)制文件制文件 ;10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5510.7.1 文件的打開與關(guān)文件的打開與關(guān)閉oifstream類中,中,open()的的mode參數(shù)缺省參數(shù)缺省值是是ios:inoofstream類中,中,open()的的mode參數(shù)缺省參數(shù)缺省值是是ios:outo缺省方式下,文件以文本方式打開缺省方式下,文件以文本方式打開omode參數(shù)用位或運(yùn)算參數(shù)用位或運(yùn)算|組合枚合枚舉常量常量ofstreamofile;ofile.open(“tes
61、t.bak”,ios:out|ios:binary);/以二以二進(jìn)制形式打開當(dāng)前目制形式打開當(dāng)前目錄下的下的test.bak文件,準(zhǔn)文件,準(zhǔn)備進(jìn)行行寫操作寫操作 10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5610.7.1 文件的打開與關(guān)文件的打開與關(guān)閉ofstreamofile;/創(chuàng)建一個(gè)建一個(gè)輸出文件流出文件流ofile.open(“text.txt”);/打開文本文件打開文本文件text.txt,使,使ofile流與流與該文文件相關(guān)件相關(guān)聯(lián)/寫文件寫文件text.txtofile.close();/關(guān)關(guān)閉text.txt文件文件ofile.open(“
62、other.txt”);/使使ofile流與另一文件流與另一文件other.txt相關(guān)相關(guān)聯(lián):重用流重用流/寫文件寫文件other.txtofile.close();/關(guān)關(guān)閉other.txt文件文件10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5710.7.1 文件的打開與關(guān)文件的打開與關(guān)閉2.通通過流流類的構(gòu)造函數(shù)打開文件的構(gòu)造函數(shù)打開文件在在創(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,打開文件,打開文件text.txt,使,使ofi
63、le流與流與該文文件相關(guān)件相關(guān)聯(lián)/寫文件寫文件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 文件的打開與關(guān)文件的打開與關(guān)閉 打開文件失打開文件失敗,流狀,流狀態(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)警告打開文件失警告打開文件失敗;退出程序退出程序;繼續(xù)正常的文件操作正常的文件操作;10.7 文件流文件流合肥工業(yè)大學(xué)合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)與信息學(xué)院5910.7.2 文本文件的操作文本文件的操作例例1:把一個(gè)整數(shù)、一個(gè)浮點(diǎn)數(shù)和一個(gè)字符串寫到名:把一個(gè)整數(shù)、一個(gè)浮點(diǎn)數(shù)和一個(gè)字符串寫到名為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表示打開文件不成功表示打開文件不成功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)跳過空白符號(hào)(如空運(yùn)算符號(hào)跳過空白符號(hào)(如空格,回車),然后讀入對(duì)應(yīng)于輸入對(duì)象類型的格,回車),然后讀入對(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;/文件不存在文件不存在則打開失打開失敗ifstream from(file_from,ios:in|ios:nocreate);/以文本方式打開以文
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案