《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》課件第8章_第1頁(yè)
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》課件第8章_第2頁(yè)
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》課件第8章_第3頁(yè)
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》課件第8章_第4頁(yè)
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》課件第8章_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

8.1流以及流類(lèi)庫(kù)結(jié)構(gòu)

(StreamandStreamClassLibraryStructure)

8.2非格式化的輸入和輸出

(UnformattedInputandOutput)

8.3格式化的輸入和輸出

(FormattedInputandOutput)8.4文件的輸入和輸出(FileInputandOutput)

8.5常見(jiàn)編程錯(cuò)誤(CommonProgrammingErrors)本章小結(jié)(ChapterSummary)

習(xí)題8(Exercises8)

8.1.1流的概念(StreamConcept)

C++輸入/輸出中的核心對(duì)象是流(stream),表示一個(gè)字節(jié)序列,流是程序設(shè)計(jì)對(duì)I/O系統(tǒng)中對(duì)象之間的數(shù)據(jù)傳輸?shù)囊环N抽象,它負(fù)責(zé)在數(shù)據(jù)的生產(chǎn)者和消費(fèi)者之間建立聯(lián)系,并管理數(shù)據(jù)流動(dòng)。流的基本操作包括讀入(readingfrom)和寫(xiě)出(writingto),也即輸入和輸出,從流中獲取數(shù)據(jù)的過(guò)程稱(chēng)為輸入流,向流中添加數(shù)據(jù)的過(guò)程稱(chēng)為輸出流,如圖8-1所示。8.1流以及流類(lèi)庫(kù)結(jié)構(gòu)(StreamandStreamClassLibraryStructure)圖8-1輸入流和輸出流下面給出一段使用預(yù)定義輸入/輸出流信息的程序:

cout<<"Whatwasthetotaldollaramountoflastmonth’ssales?";

cin>>sales;

cout<<"Howmanyunitsdidyousell?";

cin>>num;

if(num==0){cerr<<"Theaveragecannotbecomputed.\n";} //輸出錯(cuò)誤信息

else

{

avgsales=sales/num;

cout<<"Theaveragesellingpricepernuitwas";

cout<<avgsales<<"\n";

}

C++針對(duì)流的特點(diǎn),提供了如圖8-2所示的由繼承派生關(guān)系的層次結(jié)構(gòu)來(lái)描述流的行為,并為這些抽象的流類(lèi)定義了一系列的I/O操作函數(shù),所包括的類(lèi)主要有ios、istream、ostream、iostream、ifstream、ofstream、fstream、istrstream、ostrstream、strstream等。表8-1中給出了部分流類(lèi)的簡(jiǎn)要說(shuō)明。圖8-2I/O流類(lèi)層次圖表8-1部分I/O流類(lèi)列表

1.簡(jiǎn)明與可讀性

直觀地講,C++提供的I/O函數(shù)更為簡(jiǎn)明,增加了可讀性。

2.類(lèi)型安全(typesafe)

所謂類(lèi)型安全,是指在進(jìn)行I/O操作時(shí)不應(yīng)對(duì)參加輸入/輸出的數(shù)據(jù)在類(lèi)型上發(fā)生不該有的變化。

3.易于擴(kuò)充

在C++的I/O系統(tǒng)的流類(lèi)的定義中,把C語(yǔ)言中的左、右移位運(yùn)算符“<<”和“>>”,通過(guò)運(yùn)算符重載方法,定義為插入(輸出)和提取(輸入)運(yùn)算符。

8.1.2流類(lèi)庫(kù)(StreamClassLibrary)

流類(lèi)庫(kù)是按面向?qū)ο蠓椒ńM織的許多個(gè)流類(lèi)的類(lèi)層次集合,它主要由兩個(gè)流類(lèi)層次streambuf和ios組成,streambuf類(lèi)及其子類(lèi)主要完成信息通過(guò)緩沖區(qū)的交換;ios類(lèi)及其子類(lèi)是在streambuf類(lèi)實(shí)現(xiàn)的緩沖區(qū)信息交換的基礎(chǔ)上,增加了各種格式化的輸入/輸出控制方法。

1.各個(gè)流類(lèi)簡(jiǎn)介

1)?ios類(lèi)

ios類(lèi)是所有流類(lèi)的父類(lèi),以枚舉方式定義一系列與I/O有關(guān)的狀態(tài)標(biāo)志、工作方式等常量,包括設(shè)置域?qū)?、?shù)據(jù)精度等輸入、輸出格式的成員函數(shù),流的緩沖區(qū)指針是其數(shù)據(jù)成員。

2)?streambuf類(lèi)

Streambuf類(lèi)負(fù)責(zé)管理流緩沖區(qū),包括設(shè)置緩沖區(qū)和在緩沖區(qū)與輸入、輸出流之間存取字符的操作的成員函數(shù)。

3)?istream類(lèi)和ostream類(lèi)

這兩個(gè)類(lèi)除繼承了類(lèi)ios的成員外,主要為C++的系統(tǒng)數(shù)據(jù)類(lèi)型分別對(duì)于運(yùn)算符“>>”和“<<”進(jìn)行重載,是輸入、輸出的基礎(chǔ)類(lèi),用以完成流緩沖區(qū)中字符格式化和非格式化之間的轉(zhuǎn)換處理。

4)?iostream類(lèi)

iostream類(lèi)同時(shí)以istream和ostream為基類(lèi),通過(guò)共享兩個(gè)父類(lèi)的接口,能夠在同一個(gè)流上實(shí)現(xiàn)輸入和輸出操作。

5)?istream-withassign類(lèi)

istream-withassign類(lèi)是istream類(lèi)的派生類(lèi),主要增加了輸入流(對(duì)象)之間的賦值“=”運(yùn)算。

6)?ostream-withassign類(lèi)

ostream-withassign類(lèi)是ostream類(lèi)的派生類(lèi),主要增加了輸出流(對(duì)象)之間的賦值“=”運(yùn)算。

7)?iostream-withassign類(lèi)

iostream-withassign類(lèi)是iostream的派生類(lèi)。允許輸入/輸出對(duì)象的賦值和拷貝操作。

這八個(gè)類(lèi)(包括istream和ostream類(lèi))的繼承關(guān)系如圖8-3所示,大多數(shù)I/O操作函數(shù)包括在ios類(lèi)、istream類(lèi)、ostream類(lèi)和iostream類(lèi)中。名字帶有“withassign”的三個(gè)類(lèi),實(shí)際補(bǔ)充了流對(duì)象的賦值操作。streambuf類(lèi)與ios類(lèi)間無(wú)繼承關(guān)系,是兩個(gè)平行基類(lèi),當(dāng)I/O操作需要使用I/O緩沖區(qū)時(shí),可以創(chuàng)建緩沖區(qū)對(duì)象,通過(guò)流緩沖區(qū)指針完成有關(guān)緩沖區(qū)的

操作。圖8-3流類(lèi)庫(kù)的基本結(jié)構(gòu)

2.流類(lèi)庫(kù)中的兩個(gè)主要層次

1)輸入/輸出流類(lèi)(ios)

ios類(lèi)及其派生類(lèi)是在streambuf類(lèi)實(shí)現(xiàn)的通過(guò)緩沖區(qū)信息交換的基礎(chǔ)上,進(jìn)一步增加了各種格式化的輸入/輸出控制方法。圖8-4列出了類(lèi)型之間的集成關(guān)系樹(shù)。圖8-4ios類(lèi)的派生關(guān)系

2)流緩沖區(qū)類(lèi)(streambuf)

C++的I/O類(lèi)庫(kù)中的streambuf類(lèi)用來(lái)提供物理設(shè)備的接口,該類(lèi)及其派生類(lèi)主要完成信息通過(guò)緩沖區(qū)的交換。緩沖區(qū)由一段預(yù)留的字符存儲(chǔ)空間和兩個(gè)指針組成,分別指向字符要被插入或取出的位置。streambuf類(lèi)定義了一組緩沖或處理流的通用方法,諸如設(shè)置緩沖區(qū),讀寫(xiě)緩沖區(qū),移動(dòng)指針,存、取字符等,以便派生類(lèi)能夠繼承。streambuf類(lèi)還包括兩個(gè)虛函數(shù):underflow和overflow,其中,underflow負(fù)責(zé)處理嘗試對(duì)空緩沖區(qū)(emptybuffer)讀的問(wèn)題,而overflow負(fù)責(zé)處理對(duì)滿緩沖區(qū)(fullbuffer)寫(xiě)入的問(wèn)題。streambuf類(lèi)有三個(gè)派生類(lèi),如圖8-5所示。圖8-5流緩沖區(qū)類(lèi)的派生關(guān)系非格式化輸入/輸出是指按系統(tǒng)預(yù)定義的格式進(jìn)行的輸入/輸出。與cin和cout的使用方法類(lèi)似,cerr和clog類(lèi)均用來(lái)輸出錯(cuò)誤信息,它們的使用方法與cout基本相同,區(qū)別在于它們所關(guān)聯(lián)的設(shè)備始終是控制顯示器,而不像cout那樣隨著關(guān)聯(lián)設(shè)備的改變而變化。8.2非格式化的輸入和輸出(UnformattedInputandOutput)8.3.1ios類(lèi)中定義的格式控制標(biāo)志

(FormattingFlagsinClassios)

ios類(lèi)中定義了一個(gè)數(shù)據(jù)成員:格式控制標(biāo)志字longx_flags。x_flags每一位的狀態(tài)值用枚舉符號(hào)常量定義,例如:

enum{

skipws=0x0001, //跳過(guò)輸入空格

left=0x0002, //輸出左對(duì)齊調(diào)整8.3格式化的輸入和輸出(FormattedInputandOutput)right=0x0004, //輸出右對(duì)齊調(diào)整

internal=0x0008, //輸出符號(hào)和基指示符后的填補(bǔ)

dec=0x0010, //轉(zhuǎn)換為十進(jìn)制(in/out)

oct=0x0020, //轉(zhuǎn)換為八進(jìn)制(in/out)

hex=0x0040, //轉(zhuǎn)換為十六進(jìn)制(in/out)

showbase=0x0080, //輸出顯示基指示符

showpoint=0x0100, //輸出顯示小數(shù)點(diǎn)uppercase=0x0200, //大寫(xiě)十六進(jìn)制輸出

showpos=0x0400, //正整數(shù)顯示前加上“+”

scientific=0x0800, //輸出用科學(xué)表示法表示浮點(diǎn)數(shù)

fixed=0x1000, //輸出用固定小數(shù)點(diǎn)表示浮點(diǎn)數(shù)

unitbuf=0x2000, //在輸出操作后刷新所有流

stdio=0x4000 //在輸出后刷新stdout和stderr

};8.3.2操作符(Manipulator)

C++標(biāo)準(zhǔn)庫(kù)提供了標(biāo)準(zhǔn)的操作符專(zhuān)門(mén)操控流的狀態(tài),以免直接使用格式控制標(biāo)志字去處理。操作符分為帶參數(shù)和不帶參數(shù)兩種。不帶參數(shù)的操作符定義在頭文件iostream.h中,如表8-2所示。帶參數(shù)的操作符定義在頭文件iomanip.h中,如表8-3所示。表8-2iostream.h中的操作符表8-3iomanip.h中的操作符8.3.3格式化輸入和輸出的簡(jiǎn)單應(yīng)用

(SimpleApplicationofFormattedInputandOutput)

1.輸出寬度

可以通過(guò)使用setw()操作符和width()成員函數(shù)來(lái)為每個(gè)項(xiàng)指定輸出寬度。

【例8-1】

以下程序?yàn)関alues數(shù)組中每個(gè)元素指定輸出寬度為10。

#include<iostream>

usingnamespacestd;

intmain()

{doublevalues[]={1.23,35.36,653.7,45};

for(inti=0;i<4;i++){

cout.width(10);cout<<values[i]<<'\n';}

return0;

}【例8-2】

輸出形式同例8-1。

#include<iostream>

#include<iomanip> //流控制頭文件,包含一些流格式控制的函數(shù)、方法

usingnamespacestd;

intmain(){

doublevalues[]={1.23,35.36,653.7,45};

for(inti=0;i<4;i++){

cout<<setw(10)<<values[i]<<'\n';}

return0;

}

setw()和width()都不截?cái)鄶?shù)值。如果數(shù)值位超過(guò)了指定寬度,則顯示全部值。

2.對(duì)齊方式

輸出流默認(rèn)為右對(duì)齊文本,可以根據(jù)需要自己設(shè)定對(duì)齊方式,比如將前面例子中的對(duì)齊方式改為左對(duì)齊姓名和右對(duì)齊數(shù)值,例如:

#include<iostream>

#inlcude<iomanip>

usingnamespacestd;

intmain(){

doublevalues[]={1.23,35.4,653.2,4214.34};char*names[]={"Zoot","Jimmy","A1","Stan"};

for(inti=0;i<4;i++)

cout<<setiosflags(ios::left)<<setw(6)

//左對(duì)齊,寬度為6

<<names[i]<<resetiosflags(ios::left)

<<setw(10)<<values[i]<<endl;

return0;

}

3.精度控制

浮點(diǎn)數(shù)輸出精度的默認(rèn)值是6。為改變精度,可以使用setprecision操作符,該操作符有兩個(gè)標(biāo)志,ios::fixed和ios::scientific,前者浮點(diǎn)數(shù)使用普通記數(shù)法表示,后者浮點(diǎn)數(shù)使用科學(xué)記數(shù)法表示?!纠?-3】

控制輸出精度范例。

#include<iostream>

#include<iomanip>

usingnamespacestd;

intmain(){

doublevalues[]={1.23,35.36,657.6,778.2};

char*names[]={"Zoot","Jimmy","A1","Stan"};for(inti=0;i<4;i++)

cout<<setiosflags(ios::left)<<setw(6)<<name[i]

<<resetiosflags(ios::left)<<setw(6)<<setiosflags(ios::fixed)

<<setprecision(1)<<values[i]<<endl;//設(shè)置浮點(diǎn)數(shù)的輸出精度為1位

return0;

}8.4.1文件與流(FileandStream)

文件是計(jì)算機(jī)的基本概念,一般指存儲(chǔ)于外部介質(zhì)上的信息集合。在程序中,文件的概念不單是狹義地指硬盤(pán)上的文件,所有的有輸入/輸出功能的設(shè)備,例如鍵盤(pán)、控制臺(tái)、顯示器、打印機(jī)都被視為文件。8.4文件的輸入和輸出(FileInputandOutput)8.4.2文件的打開(kāi)和關(guān)閉(FileOpenandClose)

為了對(duì)一個(gè)文件進(jìn)行I/O操作,即讀/寫(xiě)操作,必須首先打開(kāi)文件,I/O操作完成后再將其關(guān)閉。對(duì)于C++的I/O系統(tǒng)來(lái)說(shuō),打開(kāi)工作包括在流(對(duì)象)的創(chuàng)建工作之中。流的創(chuàng)建由對(duì)應(yīng)流類(lèi)的構(gòu)造函數(shù)完成,其中包括把創(chuàng)建的流與要進(jìn)行讀/寫(xiě)操作的文件名聯(lián)系起來(lái),并打開(kāi)這個(gè)文件。上述三個(gè)構(gòu)造函數(shù)的參數(shù)說(shuō)明如下:

(1)第一個(gè)參數(shù)為文件名字符串(包括路徑)。

(2)第二個(gè)參數(shù)為對(duì)文件進(jìn)行的I/O模式,其值已在ios中定義(如表8-4所示)。參數(shù)mode可缺省,文件流為輸入文件流時(shí),其缺省值為in;為輸出文件流時(shí),缺省為out。

(3)第三個(gè)參數(shù)為文件屬性(可以缺省),其類(lèi)型值在filebuf類(lèi)中定義,其值如表8-5所示。表8-4文件I/O模式表8-5文件屬性參數(shù)【例8-4】

創(chuàng)建一個(gè)輸出文件流并輸出一串字符的程序可寫(xiě)為:

#include<fstream>

usingnamespacestd;

intmain()

{

ofstreamoutput("hello.dat"); //初始化輸出流對(duì)象

output<<"Helloworld!"<<endl;

return0;

}

C++的I/O系統(tǒng)還為用戶提供了open函數(shù)和close函數(shù)來(lái)完成上述工作,其方式是:用open()和close()來(lái)代替構(gòu)造函數(shù)和析構(gòu)函數(shù)。其方法是:

#include<fstream>

usingnamespacestd;

intmain()

{ofstreamoutput;

output.open(“hello.dat”);

output<<“Helloworld!”<<endl;

output.close(); //關(guān)閉output對(duì)象

return0;

}

open函數(shù)的參數(shù)與關(guān)于構(gòu)造函數(shù)的說(shuō)明一致。

參數(shù)中的文件名name亦可選用設(shè)備文件名,如表8-6所示。表8-6設(shè)備表8.4.3讀/寫(xiě)文本文件

(ReadingandWritingTextFiles)

1.文本文件的讀/寫(xiě)

一旦文件被成功打開(kāi),文件中的文本數(shù)據(jù)信息的讀/寫(xiě)操作與控制臺(tái)文件信息的輸入/輸出操作就完全一致。

文件讀/寫(xiě)的流類(lèi)層次關(guān)系如圖8-6所示。圖8-6文件讀/寫(xiě)的流類(lèi)層次關(guān)系

2.二進(jìn)制文件的讀/寫(xiě)

任何文件中無(wú)論包含的是文本數(shù)據(jù)還是二進(jìn)制數(shù)據(jù),都能以文本方式或二進(jìn)制方式打開(kāi)。也就是說(shuō),文件的打開(kāi)方式并不能保證文件數(shù)據(jù)的形式和含義,而確保文件數(shù)據(jù)的形式和含義的關(guān)鍵是如何對(duì)文件的數(shù)據(jù)進(jìn)行讀/寫(xiě)。

1.使用任何輸入/輸出流類(lèi)或系統(tǒng)的不帶參數(shù)操作符時(shí)(例如endl),應(yīng)當(dāng)至少包含一個(gè)輸入/輸出頭文件(例如iostream),否則就是錯(cuò)誤的。

2.使用任何文件輸入/輸出流類(lèi)必須包括fstream頭文件,否則就是錯(cuò)誤的。

3.使用任何字符流輸入/輸出類(lèi)必須包括sstream頭文件,否則就是錯(cuò)誤的。

4.使用帶參數(shù)的系統(tǒng)操縱符必須包括iomanip頭文件,否則就是錯(cuò)誤的。8.5常見(jiàn)編程錯(cuò)誤(CommonProgrammingErrors)

5.當(dāng)重載的操作符“>>”用于讀取字符串且域?qū)捲O(shè)為n≠0時(shí),如果你認(rèn)為無(wú)論有沒(méi)有空格,都會(huì)讀取并存儲(chǔ)下n個(gè)字符,那就大錯(cuò)特錯(cuò)了。因?yàn)樵谀J(rèn)情況下,讀取操作符將忽略空格,直到讀了n-1個(gè)非空格字符或者遇到下一個(gè)空格,然后在最后添加一個(gè)null結(jié)束符。例如,如果輸入為(前面三個(gè)字符為空格):

□□□Pepper

如下代碼:

chara[10];

cin>>setw(6)>>a;6.操作符必須返回更改后的流對(duì)象。下面的代碼是錯(cuò)誤的:

voidbell(ostream&os)

{//錯(cuò)誤:必須返回被修改的流

os<<"\a";

}

應(yīng)該這樣改正:

ostream&bell(ostream&os)

{returnos<<"\a";}

7.如果文件未被關(guān)閉,則文件輸出緩沖區(qū)中的數(shù)據(jù)不會(huì)被清空。有兩種方式可以關(guān)閉文件:顯式地調(diào)用close成員函數(shù)關(guān)閉或由析構(gòu)函數(shù)間接關(guān)閉。本章介紹了流的概念和流類(lèi)庫(kù)的結(jié)構(gòu)及使用。雖然C++語(yǔ)言沒(méi)有輸入/輸出語(yǔ)句,但C++擁有I/O流類(lèi)庫(kù)。I/O流類(lèi)庫(kù)含有兩個(gè)平行的基類(lèi):streambuf和ios,所有的流類(lèi)都是由它們派生而來(lái),使用這些流類(lèi)庫(kù)時(shí),需要包含相應(yīng)的頭文件。對(duì)于系統(tǒng)的基本數(shù)據(jù)類(lèi)型,可以用插入運(yùn)算符“<<”和提取運(yùn)算符“>>”,通過(guò)cin和cout進(jìn)行輸入/輸出。對(duì)于特殊情況,可以使用格式化輸入/輸出方法、ios類(lèi)成員函數(shù)或者操作符。本章小結(jié)(ChapterSummary)一、選擇題

1.關(guān)于getline()函數(shù)的下列描述中,()是錯(cuò)誤的。

A.該函數(shù)是用來(lái)從鍵盤(pán)上讀取字符串

B.該函數(shù)讀取的字符串長(zhǎng)度是受限制的

C.該函數(shù)讀取字符串時(shí),遇到終止符時(shí)便停止

D.該函數(shù)中所使用的終止符只能是換行符習(xí)題8(Exercises8)2.下列關(guān)于read()函數(shù)的描述中,()是對(duì)的。

A.該函數(shù)是用來(lái)從鍵盤(pán)的輸入獲取字符串

B.該函數(shù)所獲取的字符多少是不受限制的

C.該函數(shù)只能用于文本文件的操作中

D.該函數(shù)只能按照規(guī)定讀取所指定的字符串

3.下列輸出字符“A”的方法中,()是錯(cuò)誤的。

A.?cout<<put(‘A’); B.?cout<<‘A’;

C.?cout.put('A'); D.?charA='A';cout<<A;

4.?C++語(yǔ)言本身沒(méi)有定義I/O操作,但I(xiàn)/O操作包含在C++實(shí)現(xiàn)中。C++標(biāo)準(zhǔn)庫(kù)iostream.h提供了基本結(jié)構(gòu)。I/O操作分別由兩個(gè)類(lèi)istream和()提供。

A.?iostream B.?iostream.h ?

C.?ostream D.?cin

5.cin是()的一個(gè)對(duì)象,處理標(biāo)準(zhǔn)輸入。

A.?isteam B.?ostream ?

C.cerr D.?clog

6.在ios類(lèi)中有3個(gè)成員函數(shù)可以對(duì)狀態(tài)標(biāo)志進(jìn)行操作,()函數(shù)是用來(lái)設(shè)置狀態(tài)標(biāo)志的函數(shù)。

A.?longios::unsef(longflags)

B.?longios::flags()

C.?longios::setf(longflags)

D.?longios::width(intn)二、填空題

1.在C++中“流”是表示

。從流中取得數(shù)據(jù)稱(chēng)為

,用符號(hào)

表示;向流中添加數(shù)據(jù)稱(chēng)為

,用符號(hào)

表示。

2.類(lèi)

是所有基本流類(lèi)的虛基類(lèi),它有一個(gè)保護(hù)訪問(wèn)限制的指針指向類(lèi)

,其作用是管理一個(gè)流的

。

3.?C++在類(lèi)ios中定義了輸入/輸出格式控制符,它是一個(gè)

。該類(lèi)型中的每一個(gè)量對(duì)應(yīng)兩個(gè)字節(jié)數(shù)據(jù)的一位,每一個(gè)位代表一種控制,如要取多種控制時(shí)可用

運(yùn)算符來(lái)合成,放在一個(gè)

訪問(wèn)限制的

數(shù)中。所以這些格式控制符必須通過(guò)類(lèi)ios的

來(lái)訪問(wèn)。

4.?EOF為

標(biāo)志,在iostream.h中定義EOF為

,在intget()函數(shù)中讀入表明輸入流結(jié)束標(biāo)志

,函數(shù)返回

5.C++根據(jù)文件內(nèi)容的

可分為兩類(lèi):

,前者存取的最小信息單位為

,后者為

。

6.當(dāng)系統(tǒng)需要讀入數(shù)據(jù)時(shí)是從

文件讀入,即

操作。而系統(tǒng)要寫(xiě)數(shù)據(jù)時(shí),是寫(xiě)到

文件中,即

操作。

7.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,C++數(shù)據(jù)存入文件稱(chēng)做

,而由文件獲得數(shù)據(jù)稱(chēng)做

8.文件的讀/寫(xiě)可以是隨機(jī)的,意思是

,也可以是順序的,意思是

。

9.類(lèi)

支持輸入操作,類(lèi)

支持輸出操作。

10.?C++有兩種方式控制格式輸出,一種是用流對(duì)象的

,另一種是用

。

11.?C++語(yǔ)言本身沒(méi)有定義I/O操作,I/O操作包含在C++實(shí)現(xiàn)中。C++標(biāo)準(zhǔn)庫(kù)iostream提供了基本的I/O類(lèi)。I/O操作分別由兩個(gè)類(lèi)

提供。由它們派生出的類(lèi)

,提供雙向I/O操作。使用I/O流的程序需要包含

12.在C++中,打開(kāi)一個(gè)文件就是將這個(gè)文件與一個(gè)

建立聯(lián)系;關(guān)閉文件,就是取消這種關(guān)聯(lián)。

13若定義cin>>str;當(dāng)輸入ObjectWindowsProgramming!,所得的結(jié)果是

。

14.在磁盤(pán)文件操作中,打開(kāi)磁盤(pán)文件的訪問(wèn)模式常量時(shí),

是以追加方式打開(kāi)文件的。

15.文件的讀/寫(xiě)可以是隨機(jī)的,意思是

,也可以是順序的,意思是

。三、問(wèn)答題

1.下面輸出語(yǔ)句正確嗎?為什么?

cout<<x?1:0;

2.為什么cin輸入時(shí),空格和回車(chē)無(wú)法讀入?這時(shí)可改用哪些流成員函數(shù)?

3.文件的使用有它的固定格式,請(qǐng)作簡(jiǎn)單介紹。

4.二進(jìn)制文件讀函數(shù)read()能否知道文件是否結(jié)束?應(yīng)怎樣判斷文件結(jié)束?

5.文件的隨機(jī)訪問(wèn)為什么總是用二進(jìn)制文件,而不用文本文件?四、給出下列程序的執(zhí)行結(jié)果

1.#include<iostream>

usingnamespacestd;

voidmain()

{

cout.fill('*');

cout.width(10);

cout<<123.45<<endl;

cout.width(8);

cout<<123.45<<endl

溫馨提示

  • 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論