《C++程序設(shè)計(jì)》學(xué)習(xí)筆記總結(jié) - 第七章 輸入輸出流_第1頁(yè)
《C++程序設(shè)計(jì)》學(xué)習(xí)筆記總結(jié) - 第七章 輸入輸出流_第2頁(yè)
《C++程序設(shè)計(jì)》學(xué)習(xí)筆記總結(jié) - 第七章 輸入輸出流_第3頁(yè)
《C++程序設(shè)計(jì)》學(xué)習(xí)筆記總結(jié) - 第七章 輸入輸出流_第4頁(yè)
《C++程序設(shè)計(jì)》學(xué)習(xí)筆記總結(jié) - 第七章 輸入輸出流_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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)介

第七章輸入輸出流一、流類簡(jiǎn)介C++中凡是數(shù)據(jù)從一個(gè)地方傳輸?shù)搅硪粋€(gè)地方的操作都是流的操作。因此,一般意義下的讀操作在流數(shù)據(jù)抽象中被稱為(從流中)“提取”,寫操作被稱為(向流中)“插入”。在C++中,輸入輸出的完成是通過(guò)流。圖7-1中的箭頭代表派生關(guān)系。ios是抽象基類,提供輸入/輸出所需的公共操作,它派生出兩個(gè)類istream和ostream。為了避免多重繼承的二義性,從ios派生istream和ostream時(shí),均使用了virtual關(guān)鍵字(虛繼承)。istream類提供了流的大部分輸入操作,對(duì)系統(tǒng)預(yù)定義的所有輸入流重載提取運(yùn)算符“>>”。ostream類對(duì)系統(tǒng)預(yù)定義的所有輸出流重載插入運(yùn)算符“<<”。由istream和ostream又共同派生了iostream類。C++的iostream類庫(kù)提供了數(shù)百種I/O功能,iostream類庫(kù)的接口部分包含在幾個(gè)頭文件中。常見的頭文件有以下3個(gè):(1)iostream頭文件iostream包含操作所有輸入/輸出流所需的基本信息,因此大多數(shù)C++程序都應(yīng)包含這個(gè)頭文件。該文件含有4個(gè)標(biāo)準(zhǔn)流對(duì)象,提供了無(wú)格式化和格式化的I/O功能。(2)iomanip例如:setw()輸入或輸出的長(zhǎng)度,setprecision()浮點(diǎn)數(shù)精度設(shè)置,setfill()指定長(zhǎng)度的輸出不足補(bǔ)空格,setbase()設(shè)置多少進(jìn)制輸出等。頭文件iomanip包含格式化I/O的帶參數(shù)流操縱符,可用于指定數(shù)據(jù)輸入/輸出的格式。(3)fstream頭文件fstream包含處理文件的有關(guān)信息,提供建立文件、讀/寫文件的各種操作接口。真題下列流類中,可以用于輸入/輸出的是(B)。A:ifstreamB:iostreamC:istreamD:ofstream下列選項(xiàng)中,不能作為輸出流的對(duì)象是(C)A:文件B:內(nèi)存C:鍵盤D:顯示器下列選項(xiàng)中,不是C++中的標(biāo)準(zhǔn)輸入輸出的是(A)A:stdinB:coutC:clogD:cerr在C++中,使用流進(jìn)行輸入輸出,其中用于屏幕輸入(A)A:cinB:cerrC:coutD:clogC++語(yǔ)言的跳轉(zhuǎn)語(yǔ)句中,break和continue說(shuō)法正確的是(B)A:break語(yǔ)句只應(yīng)用于循環(huán)體中B:continue語(yǔ)句只應(yīng)用于循環(huán)體中C:break是無(wú)條件跳轉(zhuǎn)語(yǔ)句,continue不是D:break和continue的跳轉(zhuǎn)范圍不夠明確,容易產(chǎn)生問(wèn)題二、標(biāo)準(zhǔn)流對(duì)象C++在頭文件iostream中為用戶預(yù)定義了4個(gè)標(biāo)準(zhǔn)流對(duì)象,分別是:cin

標(biāo)準(zhǔn)輸入流

與標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)相關(guān)聯(lián),用于讀取數(shù)據(jù),可以被重定向?yàn)閺奈募凶x取數(shù)據(jù)cout

標(biāo)準(zhǔn)輸出流

與標(biāo)準(zhǔn)輸出設(shè)備(顯示器)相關(guān)聯(lián),用于輸出數(shù)據(jù),可以被重定向?yàn)橄蛭募飳懭霐?shù)據(jù)cerr

非緩沖錯(cuò)誤輸出流

與標(biāo)準(zhǔn)錯(cuò)誤信息輸出設(shè)備(顯示器)相關(guān)聯(lián)(非緩沖),用于輸出出錯(cuò)信息,不能被重定向。clog

緩沖錯(cuò)誤輸出流

與標(biāo)準(zhǔn)錯(cuò)誤信息輸出設(shè)備相關(guān)聯(lián)(緩沖),用于輸出出錯(cuò)信息,不能被重定向。在實(shí)際中,cin常用于從鍵盤輸入數(shù)據(jù),是流類istream的對(duì)象。cout常用于向屏幕輸出數(shù)據(jù),是流類ostream的對(duì)象?!境绦?-1】將標(biāo)準(zhǔn)輸出cout重定向到文件#include<iostream>usingnamespacestd;intmain(){

intx,y;

cin>>x>>y;

freopen("test.txt","w",stdout);//將標(biāo)準(zhǔn)輸出重定向到文件test.txt

函數(shù)freopen()的功能是將stream按mode指定的模式重定向到路徑path指向的文件。

if(y==0)//除數(shù)為0則輸出錯(cuò)誤信息

cerr<<"error."<<endl;

else

cout<<x<<"/"<<y<<"="<<x/y<<endl;

return0;}三、控制I/O格式C++進(jìn)行I/O格式控制的方式一般有使用流操縱符、設(shè)置標(biāo)志字和調(diào)用成員函數(shù)#include<iostream>#include<iomanip>usingnamespacestd;intmain(){

intn=65535,m=20;

//1)分別輸出一個(gè)整數(shù)的十進(jìn)制、十六進(jìn)制和八進(jìn)制表示

cout<<"1)"<<n<<"="<<hex<<n<<"="<<oct<<n<<endl;

//2)使用setbase分別輸出一個(gè)整數(shù)的十進(jìn)制、十六進(jìn)制和八進(jìn)制表示

cout<<"2)"<<setbase(10)<<m<<"="<<setbase(16)<<m<<"="<<setbase(8)<<m<<endl;

//3)使用showbase和setbase分別輸出一個(gè)整數(shù)的十進(jìn)制、十六進(jìn)制和八進(jìn)制表示

cout<<"3)"<<showbase;

//輸出表示數(shù)值進(jìn)制的前綴

cout<<setbase(10)<<m<<"="<<setbase(16)<<m<<"="<<setbase(8)<<m<<endl;

return0;}輸出:1)65535=ffff=1777772)20=14=243)20=0x14=024標(biāo)志字#include<iostream>#include<iomanip>usingnamespacestd;intmain(){

doublex=12.34;

cout<<"1)"<<setiosflags(ios::scientific|ios::showpos)<<x<<endl;

cout<<"2)"<<setiosflags(ios::fixed)<<x<<endl;

cout<<"3)"<<resetiosflags(ios::fixed)<<setiosflags(ios::scientific|ios::showpos)<<x<<endl;

cout<<"4)"<<resetiosflags(ios::showpos)<<x<<endl;//清除要輸出正號(hào)的標(biāo)志

return0;}輸出:1)+1.234000e+012)+0x1.8ae147ae147aep+33)+1.234000e+014)1.234000e+01真題下列選項(xiàng)中,用于清除基數(shù)格式位設(shè)置以十六進(jìn)制數(shù)輸出的語(yǔ)句是(B)A:cout<<setf(ios::dec,ios::basefield);B:cout<<setf(ios::hex,ios::basefield);C:cout<<setf(ios::oct,ios::basefield);D:cin>>setf(ios::hex,ios::basefield);在C++中使用流進(jìn)行輸入輸出,其中用于屏幕輸出的對(duì)象是(C)。A:cerrB:cinC:coutD:cfile下列格式控制符,既可以用于輸入,又可以用于輸出的是(D)A:setbaseB:setfillC:setprecisionD:setw用于標(biāo)識(shí)十六進(jìn)制前綴或后綴是(D)。A:無(wú)B:后綴L或eC:前綴零D:前綴0x解析:十六進(jìn)制常量——前綴0x十進(jìn)制常量——無(wú)前后綴八進(jìn)制常量——前綴0長(zhǎng)整型常量——后綴L或l在C++語(yǔ)言中,080是(D)。A:八進(jìn)制數(shù)B:十進(jìn)制數(shù)C:十六進(jìn)制數(shù)D:非法數(shù)下面的哪個(gè)保留字不能作為函數(shù)的返回類型(C)。A:voidB:intC:newD:long用于標(biāo)識(shí)十進(jìn)制常量的前綴或后綴是(A)。A:無(wú)前后綴B:后綴L或lC:前綴0D:前綴0x使用下列哪個(gè)格式控制符可設(shè)置轉(zhuǎn)換十六進(jìn)制為十進(jìn)制(A)。A:decB:octC:hexD:endl四、調(diào)用cout的成員函數(shù)#include<iostream>usingnamespacestd;intmain(){

doublevalues[]={1.23,20.3456,300.4567,4000.45678,50000.1234567};

cout.fill('*');//設(shè)置填充字符為星號(hào)*

for(inti=0;i<sizeof(values)/sizeof(double);i++)

{

cout<<"values["<<i<<"]=(";

cout.width(10);//設(shè)置輸出寬度

cout<<values[i]<<")"<<endl;

}

cout.fill('');//設(shè)置填充字符為空格

intj;

for(j=0;j<sizeof(values)/sizeof(double);j++){

cout<<"values["<<j<<"]=(";

cout.width(10);//設(shè)置輸出寬度

cout.precision(j+3);//設(shè)置保留有效數(shù)字

cout<<values[j]<<")"<<endl;

}

return0;}輸出:values[0]=(******1.23)values[1]=(***20.3456)values[2]=(***300.457)values[3]=(***4000.46)values[4]=(***50000.1)values[0]=(

1.23)values[1]=(

20.35)values[2]=(

300.46)values[3]=(

4000.46)values[4]=(

50000.12)#include<iostream>usingnamespacestd;intmain(){

charc='a',str[80]="0123456789abcdefghijklmn";

intx=65;

cout<<"cout.put('a'):";

cout.put('a');

cout<<"\ncout.put(c+25):";cout.put(c+25);

cout<<"\ncout.put(x):";cout.put(x);

cout<<"\ncout.write(str,20):";

cout.write(str,20);//將str的前20個(gè)字節(jié)寫入到輸出流中

return0;}輸出:cout.put('a'):acout.put(c+25):zcout.put(x):Acout.write(str,20):0123456789abcdefghij真題下列輸出字符'd'的方法中,錯(cuò)誤的是(A)A:cout<<put('d')B:cout<<'d'C:cout.put('d')D:chara='d';cout<<a;能夠把指定長(zhǎng)度的字節(jié)序列插入到輸出流中的函數(shù)名是(B)A:put

B:write

成員函數(shù)put()的功能是向輸出流中插入一個(gè)字符c,即字符插入。成員函數(shù)write()的功能是向輸出流中插入pch指向的一個(gè)長(zhǎng)度為nCount的字節(jié)序列,即數(shù)據(jù)塊插入C:coutD:printf五、調(diào)用cin的成員函數(shù)istream類提供了一些公有成員函數(shù),它們可以以不同的方式提取輸入流中的數(shù)據(jù)get()函數(shù)#include<iostream>usingnamespacestd;intmain(){

intn=0;

charch;

while((ch=cin.get())!=EOF){//當(dāng)文件沒(méi)有結(jié)束時(shí)繼續(xù)進(jìn)行循環(huán)

cout.put(ch);

n++;

}

cout<<"輸入字符共計(jì):"<<n<<endl;

return0;}在Windows環(huán)境下,當(dāng)進(jìn)行鍵盤輸入時(shí),在單獨(dú)的一行按〈Ctrl+Z〉組合鍵后再按〈Enter〉鍵就代表文件輸入結(jié)束。getline()函數(shù)getline()成員函數(shù)的原型如下:

從輸入流中讀取一行字符。istream&getline(char*buf,intbufSize);其功能是從輸入流中的當(dāng)前字符開始讀取bufSize-1個(gè)字符到緩沖區(qū)buf,或讀到’\n’為止(哪個(gè)條件先滿足即按哪個(gè)執(zhí)行)。函數(shù)會(huì)在buf中讀入數(shù)據(jù)的結(jié)尾自動(dòng)添加串結(jié)束標(biāo)記'\0’。istream&getline(char*buf,intbufSize,chardelim);其功能是從輸入流中的當(dāng)前字符開始讀取bufSize-1個(gè)字符到緩沖區(qū)buf,或讀到字符delim為止(哪個(gè)條件先滿足即按哪個(gè)執(zhí)行)。函數(shù)會(huì)在buf中讀入數(shù)據(jù)的結(jié)尾自動(dòng)添加'\0'。兩者的區(qū)別在于,前者是讀到'\n'。為止,后者是讀到指定字符delim為止。字符'\n'或delim都不會(huì)被存入buf中,但會(huì)從輸入流中取走。函數(shù)getline()的返回值是函數(shù)所作用的對(duì)象的引用。如果輸入流中'\n'或delim之前的字符個(gè)數(shù)達(dá)到或超過(guò)bufSize,則會(huì)導(dǎo)致讀入操作出錯(cuò),其結(jié)果是:雖然本次讀入已經(jīng)完成,但是之后的讀入都會(huì)失敗#include<iostream>usingnamespacestd;intmain(){

char

溫馨提示

  • 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)論