




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第13章C++流和文件流C++語言中沒有專門的輸入/輸出(I/O)語句,C++中的I/O操作是通過一組標(biāo)準I/O函數(shù)和I/O流來實現(xiàn)的。C++的標(biāo)準I/O函數(shù)是從C語言繼承而來的,同時對C語言的標(biāo)準I/O函數(shù)進行了擴充。C++的I/O流不僅擁有標(biāo)準I/O函數(shù)的功能,而且比I/O函數(shù)更方便、更可靠。13.1什么是流C++中把數(shù)據(jù)之間的傳輸操作稱作流。在C++中,流既可以表示數(shù)據(jù)從內(nèi)存?zhèn)魉偷侥硞€載體或設(shè)備中,即輸出流;也可以表示數(shù)據(jù)從某個載體或設(shè)備傳送到內(nèi)存緩沖區(qū)變量中,即輸入流。在進行I/O操作時,操作步驟如下:(1)打開操作,使流和文件發(fā)生聯(lián)系,建立聯(lián)系后的文件才允許數(shù)據(jù)流入或流出;(2)輸入或輸出操作;(3)結(jié)束后,使用關(guān)閉操作使文件與流斷開聯(lián)系。C++中所有流都是相同的,但操作的文件可以不同。使用流以后,程序用流統(tǒng)一對各種計算機設(shè)備和文件進行操作,使程序與設(shè)備、程序與文件無關(guān),從而提高了程序設(shè)計的通用性和靈活性。也就是說,無論與流相聯(lián)系的實際物理設(shè)備差別有多大,流都采用相同的方式運行。這種機制使得流可以跨越物理設(shè)備平臺,實現(xiàn)流的透明運作,而與實際的物理設(shè)備無關(guān)。例如,往顯示器上輸出字符和向磁盤文件或打印機輸出字符,盡管接收輸出的物理設(shè)備不同,但具體操作過程是相同的。13.1.1預(yù)定義流在程序開始運行時,C++會自動打開4個流,這些流是C++流類庫的預(yù)定義流,如下表所列。流含義所屬類庫默認設(shè)備cin標(biāo)準輸入iostream.h鍵盤cout標(biāo)準輸出iostream.h顯示器cerr沒有被緩沖的標(biāo)準錯誤輸出iostream.h顯示器clog被緩沖了的標(biāo)準錯誤輸出iostream.h顯示器C++的流通過重載運算符“<<”和“>>”執(zhí)行輸出和輸入操作。輸出操作是向流中插入一個字符序列,因此,在流操作中,將運算符“<<”稱為插入運算符。輸入操作是從流中提取一個字符序列,因此,將運算符“>>”稱為提取運算符。1.coutcout是與標(biāo)準輸出設(shè)備連接的預(yù)定義輸出流,稱為匯。C++的插入運算符“<<”向輸出流發(fā)送字符。實際上,位于插入運算符右側(cè)的字符串被存儲在“<<”左側(cè)的流中。例如:cout<<name<<""<<number<<'\n';cout是數(shù)據(jù)的目的地,插入運算符“<<”把對象或文字數(shù)據(jù)(字符串、數(shù)字或任何對象)傳送到cout。cout一般連接到標(biāo)準輸出設(shè)備即顯示器(默認設(shè)備)。2.cincin是與標(biāo)準輸入設(shè)備連接的預(yù)定義輸入流,稱為源。它從輸入流中取出數(shù)據(jù),數(shù)據(jù)從輸入提取運算符“>>”處流進程序。為了保留輸入數(shù)據(jù),輸入語句要求有目的地址,即指定數(shù)據(jù)類型的存儲單元,例如:inti;cin>>i;這段代碼所進行的操作是:提取運算符“>>”從cin參數(shù)中提取一個整型輸入數(shù)據(jù),并存入一個對象(變量),在此例中即為整型數(shù)i。cin一般連接到標(biāo)準輸入設(shè)備即鍵盤(默認設(shè)備)。3.cerrcerr類似標(biāo)準錯誤文件。cerr與cout的差別在于:(1)cerr是不能重定向的;(2)cerr不能被緩沖,它的輸出總是直接傳送到標(biāo)準輸出設(shè)備上。錯誤信息是寫到cerr的項。即使在各種其他輸出語句中,如果使用下列語句,則錯誤信息“Error”總能保證在顯示器上顯示出來:cerr<<"Error"<<"\n";4.clogclog是不能重定向的,但是可以被緩沖。在某些系統(tǒng)中,由于緩沖,使用clog代替cerr可以改進顯示速度:clog<<"Error"<<"\n";13.1.2C++的流類庫C++提供了一個流類庫,流類庫由若干完成I/O操作的基礎(chǔ)類以及若干支持特定種類的源和目標(biāo)的I/O操作類組成。流類庫的基礎(chǔ)類利用繼承關(guān)系組織起來,其類層次如下圖所示,這些類的說明如表13.2所列。所有使用流類庫的程序必須用“#include”編譯指令將iostream.h包含進來。I/O流類庫的類層次輸入流類istream通用輸入流類和其他輸入流的基類iostream.hifstream輸入文件流類fstream.histream_withassigncin的輸入流類iostream.histrstream輸入字符串流類strstrea.h輸出流類ostream通用輸出流類和其他輸出流的基類iostream.hofstream輸出文件流類fstream.hostream_withassigncout、cerr和clog的輸出流類iostream.hostrstream輸出字符串流類strstrea.hI/O流類iostream通用I/O流類和其他I/O流的基類iostream.hfstreamI/O文件流類fstream.hstrstreamI/O字符串流類strstrea.h13.2格式化I/O在以前的程序中,所有I/O采用的格式都是由C++流類庫提供的默認方式。在實際應(yīng)用中,常常需要準確控制數(shù)據(jù)(特別是整數(shù)、浮點數(shù)與字符串)的I/O格式。流類庫可用兩種方法控制數(shù)據(jù)的格式:使用ios類的成員函數(shù)和使用I/O操縱符。13.2.1使用ios成員函數(shù)每一個C++流都有自己當(dāng)前的數(shù)據(jù)格式控制狀態(tài),這些狀態(tài)用一個長整數(shù)表示,即ios類的數(shù)據(jù)成員x_flags,稱為格式化標(biāo)志字。這些格式化標(biāo)志字在ios類中定義為公有的枚舉量。在iostream.h頭文件中定義了以下枚舉類型:enum{skipws=0x0001,//跳過輸入中的空白(空格、制表符、回車、換行等)left=0x0002, //輸出左對齊right=0x0004, //輸出右對齊internal=0x0008, //在符號或基位與數(shù)值之間補齊空格dec=0x0010, //按十進制I/Ooct=0x0020, //按八進制I/Ohex=0x0040, //按十六進制I/Oshowbase=0x0080,//輸出數(shù)制的基showpoint=0x0100,//強制浮點數(shù)輸出小數(shù)點uppercase=0x0200,//十六進制采用大寫輸出showpos=0x0400,//在正數(shù)前加上“+”scientific=0x0800, //浮點數(shù)使用科學(xué)記數(shù)法fixed=0x1000,//浮點數(shù)使用普通記數(shù)法unitbuf=0x2000, //每次插入后刷新所有流stdio=0x4000 //每次插入后刷新標(biāo)準輸出和標(biāo)準錯誤輸出流};(1)setf()成員函數(shù)setf()用于設(shè)置狀態(tài)標(biāo)志。例如,設(shè)置輸出流cout的showbase標(biāo)志使用如下語句:
cout.setf(ios::showbase);設(shè)置輸入流cin的skipws標(biāo)志使用如下語句:
cin.setf(ios::skipws);
注意:格式標(biāo)志前的限定“ios::”不可缺少,因為這些標(biāo)志是在ios類中定義的。在setf()中還可用位或操作“|”將多個標(biāo)志連在一起。例如:
cout.setf(ios::scientific|ios::showpoint);同時設(shè)置scientific和showpoint兩個標(biāo)志。(2)unsetf()成員函數(shù)unsetf()用來取消格式標(biāo)志,unsetf()的用法與setf()相似。(3)flags()成員函數(shù)flags()用于獲取當(dāng)前格式標(biāo)志的狀態(tài),即返回保護成員x_flags的當(dāng)前值。(4)precision()該函數(shù)的說明如下:intprecision([intnum]);用于設(shè)置或返回(不帶參數(shù)時)浮點數(shù)的輸出精度,也就是通過這個公共成員函數(shù)設(shè)置ios類的保護數(shù)據(jù)成員x_precision的值,該成員的默認值為6。precision()函數(shù)的設(shè)置值一直有效,直到下一個precision()函數(shù)改變該值為止。(5)width()該函數(shù)的說明如下:intwidth([intlen]);用于設(shè)置或返回(不帶參數(shù)時)輸出數(shù)據(jù)的字段寬度,也就是通過這個公共成員函數(shù)設(shè)置ios類的保護數(shù)據(jù)成員x_width的值。width()函數(shù)的設(shè)置值只對下一個輸出有效。(6)fill()該函數(shù)的說明如下:charfill([charch]);用于設(shè)置或返回(不帶參數(shù)時)輸出的填充字符,也就是通過這個公共成員函數(shù)設(shè)置ios類的保護數(shù)據(jù)成員x_fill的值,該成員的默認值為空格。fill()函數(shù)的設(shè)置值一直有效,直到下一個fill()函數(shù)改變該值為止?!纠糠治鲆韵鲁绦虻膱?zhí)行結(jié)果。#include<iostream.h>voidmain(){intn=123;doubled=1234.5678;cout.precision(10);cout.width(10);cout.fill('*');cout<<n<<endl;cout<<d<<endl;cout.precision(6);cout.width(6);cout<<n<<endl;cout<<d<<endl;}*******1231234.5678***1231234.57
右對齊13.2.2使用I/O操縱符除ios類成員函數(shù)之外,C++的流類庫還提供了另一種更方便的I/O格式化方法,這種方法使用一種稱為操縱符的特殊函數(shù),操縱符的特點是可以直接包含在I/O表達式中。所有不帶形參的操縱符都定義在頭文件iostream.h中,而帶形參的操縱符則定義在頭文件iomanip.h中,因而使用相應(yīng)的操縱符就必須包含相應(yīng)的頭文件。表13.3列出了這些I/O操縱符。已在第3章已介紹,這是不再討論。13.3重載I/O運算符C++的I/O系統(tǒng)的另一個優(yōu)點是可以重載I/O運算符。通過重載I/O運算符,可以建立適合于類需要的輸入和輸出界面。I/O運算符重載的實質(zhì)就是把用于變量輸入輸出的運算符轉(zhuǎn)化為對于類對象的輸入輸出操作。13.3.1重載輸出運算符“<<”在C++中,輸出操作稱為插入,“<<”稱為插入運算符。當(dāng)重載輸出運算符“<<”用于輸出時,相當(dāng)于創(chuàng)建一個插入符函數(shù)。插入符函數(shù)的格式如下:
friendostream&operator<<(ostream&stream,類名&類引用名){函數(shù)體;returnstream;}該插入符函數(shù)是以友元方式說明的。其中的第一個參數(shù)是ostream類對象的一個引用,即stream必須是一個輸出流?!邦愐妹苯邮沾敵龅膶ο?。該函數(shù)返回ostream的一個引用stream?!昂瘮?shù)體”中給出實現(xiàn)該插入符重載目的的代碼?!纠糠治鲆韵鲁绦虻膱?zhí)行結(jié)果。#include<iostream.h>classSample{intx,y;public:Sample(intm,intn){x=m;y=n;}friendostream&operator<<(ostream&stream,Sample&s){cout<<"x="<<s.x<<",y="<<s.y<<endl;returnstream;}};voidmain(){SampleA(1,2),B(3,4);cout<<A<<B;}x=1,y=2x=3,y=413.3.2重載輸入運算符“>>”在C++中,“>>”運算符稱為提取運算符,對它進行重載的函數(shù)稱為提取符函數(shù)。這個運算符函數(shù)接收流的輸入信息。其格式如下:
friendistream&operator>>(istream&stream,類名&類引用名){函數(shù)體;returnstream;}該提取符函數(shù)是以友元方式說明的。其中的第一個參數(shù)是istream類對象的一個引用,即stream必須是一個輸入流?!邦愐妹苯邮蛰斎雽ο蟮囊?。該函數(shù)返回istream的一個引用stream?!昂瘮?shù)體”中給出實現(xiàn)該提取符重載目的的代碼?!纠糠治鲆韵鲁绦虻膱?zhí)行結(jié)果。#include<iostream.h>classSample{intx,y;public:Sample(){}friendistream&operator>>(istream&stream,Sample&s){cout<<"輸入x和y的值"<<endl;cout<<"x:";stream>>s.x;cout<<"y:";stream>>s.y;returnstream;}friendostream&operator<<(ostream&stream,Sample&s){cout<<"輸出x和y的值"<<endl;cout<<"x="<<s.x<<",y="<<s.y<<endl;returnstream;}};voidmain(){SampleA;cin>>A;cout<<A;}輸入x和y的值x:5<Enter>y:8<Enter>輸出x和y的值x=5,y=813.4檢測流操作的錯誤在I/O流的操作過程中可能出現(xiàn)各種錯誤,每一個流都有一個狀態(tài)標(biāo)志字,以指示是否發(fā)生了錯誤以及出現(xiàn)了哪種類型的錯誤,這種處理技術(shù)與格式控制標(biāo)志字是相同的。ios類定義了以下枚舉類型:enumio_state{goodbit=0x00,//不設(shè)置任何位,一切正常eofbit=0x01,//輸入流已經(jīng)結(jié)束,無字符可讀入failbit=0x02,//上次讀/寫操作失敗,但流仍可使用badbit=0x04,//試圖作無效的讀/寫操作,流不再可用hardfail=0x80//不可恢復(fù)的嚴重錯誤};對應(yīng)于這個標(biāo)志字各狀態(tài)位,ios類還提供了以下成員函數(shù)來檢測或設(shè)置流的狀態(tài):intrdstate(); //返回流的當(dāng)前狀態(tài)標(biāo)志字inteof(); //返回非0值表示到達文件尾intfail(); //返回非0值表示操作失敗intbad(); //返回非0值表示出現(xiàn)錯誤intgood(); //返回非0值表示流操作正常intclear(intflag=0); //將流的狀態(tài)設(shè)置為flag為提高程序的可靠性,我們應(yīng)在程序中檢測I/O流的操作是否正常。當(dāng)檢測到流操作出現(xiàn)錯誤時,可以通過異常處理來解決問題。13.5文件流文件是存儲在磁盤、磁帶等外部設(shè)備上的數(shù)據(jù)集合,每一個文件都必須有一個惟一名字。使用文件前必須首先打開,使用完畢后必須關(guān)閉文件。對文件的操作是由文件流類完成的。文件流類在流與文件之間建立連接,使用這些文件流類必須用#include編譯指令將頭文件fstream.h包含進來。13.5.1文件的打開與關(guān)閉流可以分為3類:輸入流、輸出流以及輸入/輸出流,相應(yīng)地必須將流說明為ifstream、ofstream以及fstream類的對象。例如:ifstreamifile; //說明一個輸入流ofstreamofile; //說明一個輸出流fstreamiofile; //說明—個輸入/輸出流說明了流對象之后,可使用函數(shù)open()打開文件。文件的打開即是在流與文件之間建立一個連接。open()的函數(shù)原型為:voidopen(constchar*filename,intmode,intprot=filebuf::openprot);其中,filename是文件名字,它可包含路徑說明。mode說明文件打開的模式,它對文件的操作影響重大,mode的取值必須是以下值之一:?
ios::in打開文件進行讀操作?
ios::out打開文件進行寫操作?
ios::ate打開時文件指針定位到文件尾?
ios::app添加模式,所有增加都在文件尾部進行?
ios::trunc如果文件已存在則清空原文件?
ios::nocreate如果文件不存在則打開失敗?
ios::noreplace如果文件存在則打開失敗?
ios::binary二進制文件(非文本文件)對于ifstream流,mode的默認值為ios::in;對于ofstream流,mode的默認值為ios::out。prot決定文件的訪問方式,取值如下:?
0普通文件?
1只讀文件?
2隱含文件?
4系統(tǒng)文件一般情況下,該訪問方式使用默認值。與其他狀態(tài)標(biāo)志一樣,mode的符號常量可以用位或運算“|”組合在一起,如ios::in|ios::binary表示以只讀方式打開二進制文件。例如:ifstreamifile;ifile.open("c:\\vc\\abc.txt",ios::ate);表示以文本文件形式打開C:\vc目錄下的abc.txt文件,文件指針定位到文件尾,準備進行讀文件操作。而操作:ofstreamofile;ofile.open("c:\\vc\\abc.txt",ios::binary);表示以二進制文件形式打開C:\vc目錄下的abc.txt文件,準備進行寫文件操作。其中,文件名中“\\”的第一個“\”為轉(zhuǎn)義字符。除了open()成員函數(shù)外,ifstream、ofstream和fstream三類流的構(gòu)造函數(shù)也可以打開文件,其參數(shù)同open()函數(shù)。例如:ifstreamifile("c:\\vc\\abc.txt");說明一個輸入流對象的同時,將這個流與文件“c:\vc\abc.txt”連接起來,使流ifile可以用文本形式對該文件進行讀操作。13.5.2文件的讀寫通過打開文件就建立I/O流與文本文件的連接,之后就可以進行文件的讀寫操作了。1.文件讀寫方法在C++中提供了幾種文件讀寫方法。(1)使用流運算符直接讀寫。文件的讀/寫操作可以直接使用流的插入運算符“<<”和提取運算符“>>”,這些運算符將完成文件的字符轉(zhuǎn)換工作。
(2)使用流成員函數(shù)。常用的輸出流成員函數(shù)如下:
?put函數(shù)該函數(shù)把一個字符寫到輸出流中。下面兩個語句默認是相同的,但第二個受該流的格式化參數(shù)的影響:
cout.put('A');//精確地輸出一個字符cout<<'A';//輸出一個字符,但此前設(shè)置的寬度和填充方式在此起作用?write函數(shù)該函數(shù)把內(nèi)存中的一塊內(nèi)容寫到一個輸出文件流中,長度參數(shù)指出寫的字節(jié)數(shù)。write函數(shù)當(dāng)遇到空字符時并不停止,因此能夠?qū)懭胪暾念惤Y(jié)構(gòu),該函數(shù)帶兩個參數(shù):一個char指針(指向內(nèi)存數(shù)據(jù)的起始地址)和一個所寫的字節(jié)數(shù)。
注意,在該結(jié)構(gòu)對象的地址之前需要char做強制類型轉(zhuǎn)換。常用的輸入流成員函數(shù)如下:
?
get函數(shù)該函數(shù)的功能與提取運算符(>>)很相似,主要的不同點是get函數(shù)在讀取數(shù)據(jù)時包括空白字符,而提取運算符在默認情況下拒絕接受空白字符。
?getline函數(shù)該函數(shù)的功能是允許從輸入流中讀取多個字符,并且允許指定輸入終止字符(默認值是換行字符),在讀取完成后,從讀取的內(nèi)容中刪除該終止字符。?read函數(shù)該函數(shù)從一個文件讀字節(jié)到一個指定的存儲器區(qū)域,由長度參數(shù)確定要讀的字節(jié)數(shù)。雖然給出長度參數(shù),但當(dāng)遇到文件結(jié)束或者在文本模式文件中遇到文件結(jié)束標(biāo)記字符時讀就結(jié)束。2.文本文件的讀寫文本文件只適用于那些解釋為ASCII碼的文件。處理文本文件時將自動作一些字符轉(zhuǎn)換,如輸出換行字符0x0A時將轉(zhuǎn)換為回車0x0D與換行0x0A兩個字符存入文本文件,讀入時也會將回車與換行兩個字符合并為一個換行字符,這樣內(nèi)存中的字符與寫入文件中的字符之間就不再是一一對應(yīng)關(guān)系。文本文件的結(jié)束以ASCII碼的控制字符0x1A表示。【例】分析以下程序的執(zhí)行結(jié)果。#include<iostream.h>#include<fstream.h>intmain(){ofstreamofile("test");//打開test文件用于寫,即輸出if(!ofile){cout<<"test文件不能打開"<<endl;return0;}ofile<<"ThisbookisC++"<<""<<12345<<endl;ofile.close();ifstreamifile("test");//打開test文件用于讀,即輸入if(!ifile){cout<<"test文件不能打開"<<endl;return0;}charstr[80];ifile>>str;ifile.close();cout<<str<<endl;return1;}本程序先在當(dāng)前目錄下建立一個test文本文件,并寫入“ThisbookisC++12345”數(shù)據(jù),然后打開該文件,將其中的數(shù)據(jù)輸入到變量str中,由于讀時遇到空格時終止,所以str為“This”。程序的執(zhí)行結(jié)果如下:This【例】編寫一個程序,將文本文件abc.txt復(fù)制到文本文件xyz.txt。解:使用輸入流成員函數(shù)get()從文本文件abc.txt中讀取一個字符ch,然后使用輸出流成員函數(shù)put()將字符ch寫入文本文件xyz.txt中,繼續(xù)這一過程直到get()讀完為止。實現(xiàn)本例功能的程序如下:#include<iostream.h>#include<fstream.h>intmain(){ifstreamifile("abc.txt");charch;if(!ifile){cout<<"abc.txt文件不能打開"<<endl;return0;}ofstreamofile("xyz.txt");if(!ofile){cout<<"xyz.txt文件不能打開"<<endl;return0;}while(ifile.get(ch))ofile.put(ch);ifile.close();ofile.close();return1;}3.二進制文件的讀寫二進制文件不同于文本文件,它可用于任何類型的文件(包括文本文件),讀寫二進制文件的字符不作任何轉(zhuǎn)換,讀寫的字符與文件之間是完全一致的。一般地,對二進制文件的讀寫可采用兩種方法:一種是使用get()和put();另一種是使用read()和write()?!纠恳韵鲁绦蚪⒁粋€輸出文件流并將一個Date結(jié)構(gòu)體變量的二進制值寫入到該文件中。#include<fstream.h>structDate{ intmo,da,yr;};voidmain(){Datedt={2,20,2001};ofstreamofile("data.dat",ios::binary);ofile.write((char*)&dt,sizeofdt);ofile.close();}4.文件的隨機讀寫每一個文件都有兩個指針:一個是讀指針,說明輸入操作當(dāng)前在文件中的位置;另一個是寫指針,說明下次寫操作的當(dāng)前位置。每次執(zhí)行輸入或輸出時,相應(yīng)的讀/寫指針將自動向后移動。C++語言的文件流不僅可以按這種順序方式進行讀/寫,而且還可以隨機地移動文件的讀/寫指針。有一些外部設(shè)備(如磁帶、行式打印機等)關(guān)聯(lián)的流只能作順序訪問,但在許多情況下使用隨機方式訪問文件更加方便靈活。(1)輸出流隨機訪問函數(shù)輸出流隨機訪問函數(shù)有seekp和tellp。一個輸出文件流保存一個內(nèi)部指針以指出下一次寫數(shù)據(jù)的位置。seekp成員函數(shù)設(shè)置這個指針,因此可以以隨機方式向磁盤文件輸出。tellp成員函數(shù)返回該文件位置指針值。這兩個成員函數(shù)的原型如下:ostream&ostream::seekp(流中的位置);ostream&ostream::seekp(偏移量,參照位置);streamposostream::tellp();其中,streampos被定義為long型,并以字節(jié)數(shù)為單位?!皡⒄瘴恢谩本哂腥缦潞x:?
cur=1相對于當(dāng)前寫指針?biāo)付ǖ奈恢谩?
beg=0相對于流的開始位置。?
end=2相對于流的結(jié)尾處。(2)輸入流隨機訪問函數(shù)。輸入流隨機訪問函數(shù)有seekg和tellg。在輸入文件流中,保留著一個指向文件中下一個將要讀數(shù)據(jù)的位置的內(nèi)部指針,可以用seekg函數(shù)來設(shè)置這個指針。使用seekg可以實現(xiàn)面向記錄的數(shù)據(jù)管理系統(tǒng),用固定長度的記錄大小乘以記錄號便得到相對于文件末尾的字節(jié)位置,然后使用get讀這個記錄。tellg成員函數(shù)返回當(dāng)前文件讀指針的位置,這個值是streampos類型,該typedef結(jié)構(gòu)定義在iostream.h中。這兩個成員函數(shù)的說明原型如下:istream&istream::seekg(流中的位置);istream&istream::seekg(偏移量,參照位置);streamposistream::tellg();其中,streampos被定義為long型,并以字節(jié)數(shù)為單位?!皡⒄瘴恢谩本哂腥缦潞x:
?
cur=1相對于當(dāng)前讀指針?biāo)付ǖ奈恢谩?/p>
?
beg=0相對于流的開始位置。
?
end=2相對于流的結(jié)尾處?!纠烤帉懸粋€程序,在文件City.dat中輸入幾個城市的名稱和區(qū)號,并根據(jù)用戶輸入的區(qū)號查找對應(yīng)的城市。解
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年新型船用氣象儀器資金申請報告代可行性研究報告
- 初三第一次月考后校長在師生大會上發(fā)言數(shù)歷屆中考還看今朝
- 活動現(xiàn)場臨時舞臺搭建與LED屏幕租賃服務(wù)協(xié)議
- 物流倉儲設(shè)施建設(shè)與倉儲物流配送服務(wù)合同
- 教育行業(yè)虛擬現(xiàn)實技術(shù)應(yīng)用有限合伙投資合同
- 2025年中國薄膜封裝油墨行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 2025年中國包裝用膠粘劑行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 抖音互動信息合規(guī)性保證合同
- 影視劇劇本著作權(quán)獨家轉(zhuǎn)讓及改編權(quán)許可協(xié)議
- 網(wǎng)絡(luò)文學(xué)IP改編權(quán)授權(quán)與網(wǎng)絡(luò)直播平臺合作合同
- 2025眼鏡行業(yè)市場分析報告
- 河南省鄭州市2025屆中考二模 數(shù)學(xué)試卷(含答案)
- 2022-2023學(xué)年廣東省廣州市天河區(qū)七年級(下)期末數(shù)學(xué)試卷(含答案)
- 2025-2031年中國雞爪市場競爭態(tài)勢及投資戰(zhàn)略規(guī)劃研究報告
- 湖北省武漢市常青聯(lián)合體2024-2025學(xué)年高一下學(xué)期期中考試歷史試題(原卷版+解析版)
- 銀屑病診斷與治療
- 2025-2030硅膠行業(yè)市場發(fā)展分析及趨勢前景與投資戰(zhàn)略研究報告
- 壓力管道質(zhì)量保證手冊
- 銀行大堂經(jīng)理崗位培訓(xùn)
- (四調(diào))武漢市2025屆高中畢業(yè)生四月調(diào)研考試 數(shù)學(xué)試卷(含答案詳解)
- 重慶二手房買賣合同范本
評論
0/150
提交評論