版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 滬科版九年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)考點(diǎn) 第23章 解直角三角形知識(shí)歸納與題型突破(12類(lèi)題型清單)
- 2024-2030年中國(guó)型鋼產(chǎn)業(yè)趨勢(shì)預(yù)測(cè)及投資產(chǎn)量分析報(bào)告
- 2024-2030年中國(guó)地鐵建設(shè)行業(yè)前景規(guī)劃及投資經(jīng)營(yíng)模式分析報(bào)告
- 2024年智能軟件使用與數(shù)據(jù)保密協(xié)議2篇
- 2024年特許經(jīng)營(yíng)合同(加盟)
- 梅河口康美職業(yè)技術(shù)學(xué)院《運(yùn)動(dòng)傷害事故處理與急救》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年“通辦”第二批事項(xiàng)指導(dǎo)目錄實(shí)施合同范本3篇
- 2024年二手手機(jī)買(mǎi)賣(mài)與市場(chǎng)推廣合作協(xié)議3篇
- 滿洲里俄語(yǔ)職業(yè)學(xué)院《云計(jì)算原理及應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 影視動(dòng)畫(huà)資源庫(kù)相關(guān)專(zhuān)業(yè)介紹
- 離散數(shù)學(xué)(下)智慧樹(shù)知到課后章節(jié)答案2023年下桂林電子科技大學(xué)
- 咖啡因提取的綜合性實(shí)驗(yàn)教學(xué)
- GONE理論視角下宜華生活財(cái)務(wù)舞弊案例分析
- 初中語(yǔ)文默寫(xiě)競(jìng)賽方案
- 2023電力建設(shè)工程監(jiān)理月報(bào)范本
- 汽車(chē)空調(diào)檢測(cè)與維修-說(shuō)課課件
- 氨水濃度密度對(duì)照表
- 白雪歌送武判官歸京公開(kāi)課一等獎(jiǎng)?wù)n件省課獲獎(jiǎng)?wù)n件
- 園林植物栽培與環(huán)境
- 小型雙級(jí)液壓舉升器設(shè)計(jì)
- 9月支部委員會(huì)會(huì)議記錄
評(píng)論
0/150
提交評(píng)論