




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第九章第九章 流類庫和輸入流類庫和輸入/ /輸出輸出本章的目的就是把數(shù)據(jù)保存到磁盤文件中,本章的目的就是把數(shù)據(jù)保存到磁盤文件中,C+同時同時解決了更多的問題。解決了更多的問題。C+語言中并沒有輸入語言中并沒有輸入/輸出語句,而是在標準庫輸出語句,而是在標準庫里包含了一個里包含了一個I/O流類庫,它與標準模板庫同為流類庫,它與標準模板庫同為C+標標準庫中最重要的組成部分。數(shù)據(jù)從一個對象到另一個對準庫中最重要的組成部分。數(shù)據(jù)從一個對象到另一個對象的傳送被抽象為象的傳送被抽象為“流流”。數(shù)據(jù)的輸入。數(shù)據(jù)的輸入/輸出就是通過輸出就是通過輸入輸入/輸出流來實現(xiàn)的。輸出流來實現(xiàn)的。 流是一種抽象的概念,負
2、責在數(shù)據(jù)的產(chǎn)生者和數(shù)據(jù)流是一種抽象的概念,負責在數(shù)據(jù)的產(chǎn)生者和數(shù)據(jù)的使用者之間建立聯(lián)系,并管理數(shù)據(jù)的流動。的使用者之間建立聯(lián)系,并管理數(shù)據(jù)的流動。 第九章第九章 流類庫和輸入流類庫和輸入/ /輸出輸出9.1 C+的基本流類體系的基本流類體系 9.3 標準設備的輸入標準設備的輸入/輸出輸出 9.2 輸入輸出的格式控制輸入輸出的格式控制 9.4 文件的輸入與輸出文件的輸入與輸出 9.6 MFC中的文件處理中的文件處理 9.5 字符串流(內(nèi)存流)字符串流(內(nèi)存流) 9.1 C+的基本流類體系的基本流類體系整個流類體系是一個派生類體系。整個流類體系在頭文件整個流類體系是一個派生類體系。整個流類體系在頭
3、文件中說明,它包含了中說明,它包含了、和和。而輸入輸出文件流部分在。而輸入輸出文件流部分在中說明,它包含中說明,它包含。 圖圖9.1 輸入輸入/輸出流類派生體系輸出流類派生體系iosstreambufistreamostreamistream_withassigniostreamostream_withassigniostream_withassign指針指針9.1 C+的基本流類體系的基本流類體系iosistreamifstrstreamistream_withassignifstreamstreambuffilebufstrstreambufstdiobufiostream_initios
4、treamfstreamstrstreamstdiostreamostreamofstreamostream_withassign ostrstream9.1 C+的基本流類體系的基本流類體系在流類庫中,最重要的兩部分功能為標準輸在流類庫中,最重要的兩部分功能為標準輸入入/ /輸出(輸出(standard input/outputstandard input/output)和文件處)和文件處理。在理。在C+C+的流類庫中定義了四個全局流對象:的流類庫中定義了四個全局流對象:cincin,coutcout,cerrcerr和和clogclog。使用這四個流對象,。使用這四個流對象,可以完成人機交
5、互的功能。要使用這四個功能,可以完成人機交互的功能。要使用這四個功能,必須包含必須包含文件。文件。 文件處理完成永久保存的功能。在文件處理完成永久保存的功能。在VC+VC+的的MFCMFC編程中采用了序列化(編程中采用了序列化(SerializationSerialization)。)。 9.2 輸入輸出的格式控制輸入輸出的格式控制C+在類在類ios中提供格式化輸入輸出。格式控制符定義為公有的無名的枚舉類型:中提供格式化輸入輸出。格式控制符定義為公有的無名的枚舉類型:enum skipws=0 x0001/跳過輸入中的空格字符跳過輸入中的空格字符left=0 x0002/輸出左對齊輸出左對齊r
6、ight=0 x0004/輸出右對齊輸出右對齊internal=0 x0008/在輸出符號或數(shù)制字符后填充在輸出符號或數(shù)制字符后填充dec=0 x0010/在輸入輸出時將數(shù)據(jù)按十進制處理在輸入輸出時將數(shù)據(jù)按十進制處理oct=0 x0020/在輸入輸出時將數(shù)據(jù)按八進制處理在輸入輸出時將數(shù)據(jù)按八進制處理hex=0 x0040/在輸入輸出時將數(shù)據(jù)按十六進制處理在輸入輸出時將數(shù)據(jù)按十六進制處理showbase=0 x0080/在輸出時帶有表示數(shù)制基的字符在輸出時帶有表示數(shù)制基的字符showpoint=0 x0100/輸出符點數(shù)時輸出符點數(shù)時,必定帶小數(shù)點必定帶小數(shù)點uppercase=0 x0200/
7、輸出十六進制輸出十六進制,用大寫用大寫showpos=0 x0400/輸出正數(shù)時輸出正數(shù)時,加加”+”號號scientific=0 x0800/科學數(shù)方式輸出浮點數(shù)科學數(shù)方式輸出浮點數(shù)fixed=0 x1000/定點數(shù)方式輸出實數(shù)定點數(shù)方式輸出實數(shù)unitbuf=0 x2000/插入后插入后,立即刷新流立即刷新流stdio=0 x4000/插入后插入后,立即刷新立即刷新stdout和和stderr 9.2 輸入輸出的格式控制輸入輸出的格式控制采用格式控制,只要把對應位置采用格式控制,只要把對應位置1即可,取多種控制時,用或即可,取多種控制時,用或“|”運算符來運算符來合成。合成?!纠纠?.1
8、】整型數(shù)輸出。】整型數(shù)輸出。#include void main(void)int inum=255;cout”十進制方式十進制方式”inumt;cout.flags(ios:oct|ios:showbase);cout”八進制方式八進制方式”inumt;cout.setf(ios:hex);cout”十六進制方式十六進制方式”inumendl;程序執(zhí)行后輸出:十進制方式程序執(zhí)行后輸出:十進制方式255 八進制方式八進制方式0377 十六進制方式十六進制方式0 xff 9.2 輸入輸出的格式控制輸入輸出的格式控制【例【例9.2】浮點數(shù)輸出。】浮點數(shù)輸出。#include void main()
9、double fnum=31.415926535;cout”缺省域寬為缺省域寬為:”cout.width()”位位”n; cout”缺省精度為缺省精度為:”cout.precision()”位位”n;cout”缺省表達方式缺省表達方式:”funmn; cout.setf(ios:scientific,ios:floatfield);cout”科學數(shù)表達方式科學數(shù)表達方式:”fnumn;cout.setf(ios:fixed,ios:floatfield); cout”定點表達方式定點表達方式:”fnumn;cout.precision(9); cout.setf(ios:scientific,
10、ios:floatfield); cout”定點定點9位科學數(shù)表達方式位科學數(shù)表達方式:”fnumendl;9.2 輸入輸出的格式控制輸入輸出的格式控制其中其中floatfield,是為了避免浮點數(shù)互相沖突的雙重規(guī)定,所以是,是為了避免浮點數(shù)互相沖突的雙重規(guī)定,所以是清除原浮點數(shù)第清除原浮點數(shù)第13和第和第14兩位,再用新的一位去代替。程序執(zhí)行兩位,再用新的一位去代替。程序執(zhí)行后輸出:后輸出:缺省域寬為缺省域寬為:0位位缺省精度為缺省精度為:6位位缺省表達方式缺省表達方式:31.4159科學數(shù)表達方式科學數(shù)表達方式:3.141593e+001定點表達方式定點表達方式:31.415927定點定點
11、9位科學數(shù)表達方式位科學數(shù)表達方式:3.141592654e+001 9.2 輸入輸出的格式控制輸入輸出的格式控制cin,coutcin,cout和和clogclog都是緩沖流。輸出而言,都是緩沖流。輸出而言,僅當輸出緩沖區(qū)滿才將緩沖區(qū)中的信息輸出,僅當輸出緩沖區(qū)滿才將緩沖區(qū)中的信息輸出,對輸入而言,僅當輸入一行結束,才開始從對輸入而言,僅當輸入一行結束,才開始從緩沖區(qū)中取數(shù)據(jù),當希望把緩沖區(qū)中的信息緩沖區(qū)中取數(shù)據(jù),當希望把緩沖區(qū)中的信息立即輸出,可用立即輸出,可用flushflush, 9.3 標準設備的輸入標準設備的輸入/ /輸出輸出標準設備輸入不安全,健壯性差,錯誤的輸入類標準設備輸入不
12、安全,健壯性差,錯誤的輸入類型導致錯誤的結果而且是無法預知的錯誤結果。注意型導致錯誤的結果而且是無法預知的錯誤結果。注意以下幾點。以下幾點。1cin為緩沖流。為緩沖流。不可能用刷新來清除緩沖區(qū)不可能用刷新來清除緩沖區(qū),不不能輸錯,也不能多輸!能輸錯,也不能多輸! 2.輸入數(shù)據(jù)類型必須與對應要提取的數(shù)據(jù)類型一致,輸入數(shù)據(jù)類型必須與對應要提取的數(shù)據(jù)類型一致,否則出錯。在編程中加入對狀態(tài)字否則出錯。在編程中加入對狀態(tài)字state的判斷的判斷,可以提高輸入的健壯性??梢蕴岣咻斎氲慕研?。 3.空格和回車都可以作為數(shù)據(jù)之間的分格符,但如空格和回車都可以作為數(shù)據(jù)之間的分格符,但如果是字符型和字符串,則空格
13、?;剀嚪麩o法讀入。果是字符型和字符串,則空格?;剀嚪麩o法讀入。 9.3 標準設備的輸入標準設備的輸入/ /輸出輸出enum ios_stategoodbit=0 x00; /流正常流正常eofbit=0 x01; /輸入流結束輸入流結束,忽略后繼提取操忽略后繼提取操 作;或文件結束,已無數(shù)據(jù)可取作;或文件結束,已無數(shù)據(jù)可取failbit=0 x02; /最近的最近的I/O操作失敗操作失敗,流可恢復流可恢復badbit=0 x04; /最近的最近的I/O操作非法操作非法,流可恢復流可恢復hardfail=0 x08; /I/O出現(xiàn)致命錯誤出現(xiàn)致命錯誤,流不可恢流不可恢 復復,VC+6.0不支持不
14、支持 9.3 標準設備的輸入標準設備的輸入/ /輸出輸出讀取狀態(tài)有關操作如下:讀取狀態(tài)有關操作如下:inline int ios:rdstate() const return state; /讀取狀態(tài)字讀取狀態(tài)字inline int ios:operator!() constreturn state&(badbit|failbit); /可用操作符可用操作符!()代替代替fail()inline int ios:bad() return state & badbit; /返回非法操作位返回非法操作位inline void ios:clear(int _i) lock();sta
15、te=_i;unlock(); /人工設置狀態(tài)人工設置狀態(tài),可用來清狀態(tài)可用來清狀態(tài)inline int ios:eof() const return state&eofbit; /返回流返回流(文件文件)結束位結束位inline int ios:fail() constreturn state&(badbit|failbit); /返回操作失敗返回操作失敗,流可恢復這兩位流可恢復這兩位inline int ios:good() constreturn state=0; /正常返回正常返回1,否則返回否則返回09.3 標準設備的輸入標準設備的輸入/ /輸出輸出【例【例9.3】提
16、高輸入的健壯性。輸入時需要故意輸錯,以】提高輸入的健壯性。輸入時需要故意輸錯,以測試健壯性。測試健壯性。程序:程序:x9_3.cpp9.3 標準設備的輸入標準設備的輸入/ /輸出輸出輸入流成員函數(shù)聲明:輸入流成員函數(shù)聲明:istream&istream:get(char &);/提取一個字符提取一個字符,放在字符型變量中放在字符型變量中istream&istream:get(unsigned char &);/同上一函數(shù)同上一函數(shù)istream&istream:get(signed char &);/同上一函數(shù)同上一函數(shù)istream&i
17、stream:get(char *,int,char=n);/提取字符串提取字符串,到串結束到串結束 符或指定長度為止符或指定長度為止istream&istream:get(unsigned char *,int,char=n); /同上同上istream&istream:get(signed char *,int,char=n); /同上同上istream&istream:getline(char *,int,char=n);/同上同上,但包括分隔符但包括分隔符istream&istream:getline(unsigned char *,int,char=n
18、);/同上同上istream&istream:getline(signed char *,int,char=n);/同上同上 9.3 標準設備的輸入標準設備的輸入/ /輸出輸出【例【例9.4】ignore()和和gcount()函數(shù)使用。函數(shù)使用。(運行兩種情況下的輸出運行兩種情況下的輸出)類類ostream串中輸出字符的成員函數(shù)有:串中輸出字符的成員函數(shù)有:ostream&ostream:put(char);/輸出參數(shù)字符輸出參數(shù)字符ostream&ostream:put(unsigned char);ostream&ostream:put(signed ch
19、ar);ostream&ostream:flush();/刷新一個輸出流刷新一個輸出流,用于用于count和和clog 9.4 文件的輸入與輸出文件的輸入與輸出 本節(jié)中文件指的是磁盤文件。本節(jié)中文件指的是磁盤文件。C+根據(jù)文件(根據(jù)文件(file)內(nèi)容的數(shù))內(nèi)容的數(shù)據(jù)格式,可分為兩類:二進制文件和文本文件。文本文件由字符據(jù)格式,可分為兩類:二進制文件和文本文件。文本文件由字符序列組成,也稱序列組成,也稱ASCII碼文件,在文本文件中存取的最小信息單碼文件,在文本文件中存取的最小信息單位為字符(位為字符(character),而二進制文件中存取的最小信息單位為),而二進制文件中存取的最小
20、信息單位為字節(jié)(字節(jié)(Byte)。)。 使用文件的方法是固定的,首先打開一個文件,使磁盤文件使用文件的方法是固定的,首先打開一個文件,使磁盤文件和文件流對象建立聯(lián)系,然后將某種格式的數(shù)據(jù)寫入一個文件,和文件流對象建立聯(lián)系,然后將某種格式的數(shù)據(jù)寫入一個文件,以后可按同樣格式從這個文件讀出數(shù)據(jù)。最后當不再使用文件時,以后可按同樣格式從這個文件讀出數(shù)據(jù)。最后當不再使用文件時,要關閉文件,這時文件才能從緩沖區(qū)中完全寫回磁盤。類要關閉文件,這時文件才能從緩沖區(qū)中完全寫回磁盤。類ifstream支持從輸入文件中提取數(shù)據(jù)的操作。而類支持從輸入文件中提取數(shù)據(jù)的操作。而類ofstream完成完成數(shù)據(jù)寫入文件中的
21、各種操作。數(shù)據(jù)寫入文件中的各種操作。 9.4 文件的輸入與輸出文件的輸入與輸出9.4.1 文件的打開與關閉文件的打開與關閉 9.4.2 文件的讀寫文件的讀寫 9.4.1 文件的打開與關閉文件的打開與關閉文件的使用步驟如下:文件的使用步驟如下:1說明一個文件流對象。說明一個文件流對象。如果只輸入用如果只輸入用ifstream的對的對象,只輸出用象,只輸出用ofstream的對象,既輸入又輸出用的對象,既輸入又輸出用iofstream的對象。的對象。ifstream ifile;ofstream ofile;fstream iofile;這又被稱為內(nèi)部文件。這又被稱為內(nèi)部文件。9.4.1 文件的打
22、開與關閉文件的打開與關閉 2使用文件流對象的成員函數(shù)打開一個磁盤文件。使用文件流對象的成員函數(shù)打開一個磁盤文件。這樣在這樣在文件流對象和磁盤文件名之間建立聯(lián)系。文件流中說明了三個文件流對象和磁盤文件名之間建立聯(lián)系。文件流中說明了三個打開文件的成員函數(shù)。打開文件的成員函數(shù)。void ifstream:open(const char*,int =ios:in,int=filebuf:openprot);void ofstream:open(const char *,int=ios:out,int=filebuf:opernprot);void fstream:open(const char*,in
23、t,int=filebuf:openprot); 9.4.1 文件的打開與關閉文件的打開與關閉三個文件流類都重載了一個帶缺省參數(shù)的構造函數(shù),與三個文件流類都重載了一個帶缺省參數(shù)的構造函數(shù),與open函數(shù)一樣:函數(shù)一樣:ifstream:ifstream(const char *,int=ios:in,int=filebuf:openprot);ofstream:ofstream(const char *,int=ios:out,int=filebuf:openprot);fstream:fstream(const char *,int,int=filebuf:operprot);所以所以1,2
24、兩步可合成:兩步可合成:fstream iofile(”myfile.txt”,ios:in|ios:out);如同動態(tài)分配內(nèi)存一樣,打開文件也應該判斷是否成功,若打開成功,文件如同動態(tài)分配內(nèi)存一樣,打開文件也應該判斷是否成功,若打開成功,文件流對象值為非零值,不成功為流對象值為非零值,不成功為0(NULL),文件流對象值物理上就是指它的地址。),文件流對象值物理上就是指它的地址。因此打開一個文件完整的程序為:因此打開一個文件完整的程序為:fstream iofile(”myfile.txt”,ios:in|ios:out);if(!iofile) cout”不能打開文件不能打開文件:”myf
25、ile,txt”)和插入運算符(和插入運算符()進行。)進行?!纠纠?.7】復制文件?!繌椭莆募?程序:程序:Ex9_7.cpp9.4.2 文件的讀寫文件的讀寫【例【例9.8】按行進行復制文本文件。】按行進行復制文本文件。 程序:程序:Ex9_8.cpp9.4.2 文件的讀寫文件的讀寫【例【例9.9】文本式數(shù)據(jù)文件的創(chuàng)建與讀取數(shù)據(jù)?!课谋臼綌?shù)據(jù)文件的創(chuàng)建與讀取數(shù)據(jù)。 程序:程序:Ex9_9.cpp本例是典型的本例是典型的C+數(shù)據(jù)存入文件和由文件獲得數(shù)據(jù)的方法,按面向對數(shù)據(jù)存入文件和由文件獲得數(shù)據(jù)的方法,按面向對象的說法為把象的說法為把對象存入文件和由文件重構對象。對象存入文件和由文件重構對
26、象。 對二進制文件的讀寫,對二進制文件的讀寫,C+也提供了成員函數(shù)來實現(xiàn):也提供了成員函數(shù)來實現(xiàn):istream&istream:read(char *,int);/從二進制流提取從二進制流提取istream&istream:read(unsigned char*,int);istream&istream:read(signed char *,int); ostream&ostream:write(const char *,int);/向二進制流插入向二進制流插入ostream&ostream:write(const unsigned char *,in
27、t);ostream&ostream:write(const signed char *,int); 讀函數(shù)并不能知道文件是否結束,可用狀態(tài)函數(shù)讀函數(shù)并不能知道文件是否結束,可用狀態(tài)函數(shù)int ios:eof()來判斷。來判斷。 9.4.2 文件的讀寫文件的讀寫【例【例9.10】創(chuàng)建二進制數(shù)據(jù)文件,以及數(shù)據(jù)文件的讀取。】創(chuàng)建二進制數(shù)據(jù)文件,以及數(shù)據(jù)文件的讀取。按按C+程序設計慣例,將該操作設計為成員函數(shù)。為與程序設計慣例,將該操作設計為成員函數(shù)。為與【例【例9.9】對比,采用同名的類,并有同樣的數(shù)據(jù)成員。】對比,采用同名的類,并有同樣的數(shù)據(jù)成員。 程序:程序:Ex9_10.cpp使用二
28、進制文件,可以控制字節(jié)長度,讀寫數(shù)據(jù)不會使用二進制文件,可以控制字節(jié)長度,讀寫數(shù)據(jù)不會出現(xiàn)二義性,可靠性高。同時不知格式是無法讀取的,保出現(xiàn)二義性,可靠性高。同時不知格式是無法讀取的,保密性好。密性好。 9.4.2 文件的讀寫文件的讀寫C+把每一個文件都看成一個有序的字節(jié)流,見把每一個文件都看成一個有序的字節(jié)流,見圖圖9.3.每一個文件或者以文件結束符(每一個文件或者以文件結束符(end of file marker)結束,或者在特定的字節(jié)號處結束。)結束,或者在特定的字節(jié)號處結束。 012436578n-1文件結束符文件結束符圖圖9-3 C+把文件看作有序的把文件看作有序的n個字節(jié)的流個字節(jié)
29、的流9.4.2 文件的讀寫文件的讀寫當打開一個文件時,該文件就和某個流關聯(lián)起來了。當打開一個文件時,該文件就和某個流關聯(lián)起來了。對文件進行讀寫實際上受到一個文件定位指針(對文件進行讀寫實際上受到一個文件定位指針(file position pointer)的控制,輸入流的指針也稱為讀指針,)的控制,輸入流的指針也稱為讀指針,每一次提取操作將從讀指針當前所指位置開始,每次提取每一次提取操作將從讀指針當前所指位置開始,每次提取操作自動將讀指針向文件尾移動。輸出流指針也稱寫指針,操作自動將讀指針向文件尾移動。輸出流指針也稱寫指針,每一次插入操作將從寫指針當前位置開始,每次插入操作每一次插入操作將從寫
30、指針當前位置開始,每次插入操作自動將寫指針向文件尾移動。自動將寫指針向文件尾移動。在在C+中可以由程序移動文件指針,從而實現(xiàn)文件的中可以由程序移動文件指針,從而實現(xiàn)文件的隨機訪問,即可讀寫流中任意一段內(nèi)容。一般文本文件很隨機訪問,即可讀寫流中任意一段內(nèi)容。一般文本文件很難準確定位,所以隨機訪問多用于二進制文件。難準確定位,所以隨機訪問多用于二進制文件。 9.4.2 文件的讀寫文件的讀寫在在ios類中說明了一個公有枚舉類型:類中說明了一個公有枚舉類型:enum seek_dirbeg=0;/文件開頭文件開頭cur=1;/文件指針的當前位置文件指針的當前位置end=2;/文件結尾文件結尾;istr
31、eam類中提供了三個成員函數(shù)類中提供了三個成員函數(shù)istream&istream:seekg(streampos);/指針直接定位指針直接定位istream&istream:seekg(streamoff, ios:seek_dir);/指針相對定位指針相對定位long istream:tellg();/返回當前指針位置返回當前指針位置流的指針位置類型流的指針位置類型streampos和流的指針偏移類型和流的指針偏移類型streamoff定義為長整定義為長整型,型, 9.4.2 文件的讀寫文件的讀寫datafile.seekg(-20L,ios:cur);表示將文件定位指針從當
32、前位置向文件頭部方向移表示將文件定位指針從當前位置向文件頭部方向移20個字節(jié)。個字節(jié)。datafile.seekg(20L,ios:beg);表示將文件定位指針從文件頭向文件尾方向移表示將文件定位指針從文件頭向文件尾方向移20個字節(jié)。個字節(jié)。datafile.seekg(-20L,ios:end);表示將文件定位指針從文件尾向文件頭方向移表示將文件定位指針從文件尾向文件頭方向移20個字節(jié)。個字節(jié)。tellg()和和seekg()往往配合使用,按【例往往配合使用,按【例9.10】中的定義和程序】中的定義和程序long pos=sdatafile.tellg();car2.Bdatafromfil
33、e(sdatafile);sdatafile:seekg(pos);motor2.Bdatafromfile(sdatafile);這時這時car2和和motor2中放的都是中放的都是car1的數(shù)據(jù)。的數(shù)據(jù)。 9.4.2 文件的讀寫文件的讀寫ostream類也提供了三個成員函數(shù)管理文件定位指針ostream&ostream:seekp(streampos);ostream&ostream:seekp(streamoff,ios:seek_dir);long ostream:tellp(); 9.4.2 文件的讀寫文件的讀寫【例【例9.11】使用隨機訪問對【例】使用隨機訪問對【例
34、9.10】進行改造。將入】進行改造。將入口(口(main())程序中的文件改為輸入輸出文件,寫完后)程序中的文件改為輸入輸出文件,寫完后將文件定位指針撥回文件開始處。對應商品類中兩成員函將文件定位指針撥回文件開始處。對應商品類中兩成員函數(shù):數(shù): Bdatatofile(fstream&dist);Bdatafromfile(fstream&dist);參數(shù)類型也已改為參數(shù)類型也已改為 fsream&。 9.5 字符串流(內(nèi)存流)字符串流(內(nèi)存流)可以把流的概念連接到字符串(可以把流的概念連接到字符串(string)上。文件在)上。文件在C+看來看來是字節(jié)流或字符流,串當
35、然更可以看作字符流。可以用輸入輸出操是字節(jié)流或字符流,串當然更可以看作字符流??梢杂幂斎胼敵霾僮鱽硗瓿纱鞯牟僮鳌F渌牧魇桥c設備相關,而串流是與內(nèi)存相作來完成串流的操作。其他的流是與設備相關,而串流是與內(nèi)存相關,所以也稱內(nèi)存流。串流類包括關,所以也稱內(nèi)存流。串流類包括ostrstream、istrstream、strstream。參見圖。參見圖9.2。它們在。它們在中說明。串流類中說明。串流類對象可以保存字符,也可以保存整數(shù)、浮點數(shù)。串流類對象采用文對象可以保存字符,也可以保存整數(shù)、浮點數(shù)。串流類對象采用文本方式,如同文本文件一樣。其構造函數(shù)常用下面幾個:本方式,如同文本文件一樣。其構造函數(shù)
36、常用下面幾個:istrstream:istrstream(const char * str);istrstream:istrstream(const char * str,int);ostrstream:ostrstream(char *,int,int=ios:out); 9.5 字符串流(內(nèi)存流)字符串流(內(nèi)存流)以串流為信息源:以串流為信息源:char str36=”This is a book.n”;char ch;istrstream input(str);inputch;/從輸入設備從輸入設備(串串)讀入一個字符讀入一個字符coutchendl;/輸出輸出T9.5 字符串流(內(nèi)存流)字符串流(內(nèi)存流)將整數(shù)和浮點數(shù)放入串中,并取出來將整數(shù)和浮點數(shù)放入串中,并取出來int inum1=93,inum2;double fnu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年細胞治療產(chǎn)品臨床試驗法規(guī)解讀與審批流程報告
- 海上風能資源評估報告2025年深遠海風電發(fā)展規(guī)劃海上風電場經(jīng)濟效益分析
- 茶與咖啡的跨界融合:2025年市場發(fā)展趨勢與品牌競爭力研究報告
- 城市自來水廠升級改造2025年環(huán)境友好型技術應用報告
- 2025年智能倉儲貨架制造項目智能控制系統(tǒng)研發(fā)報告
- 物聯(lián)網(wǎng)設備安全漏洞防護策略深度剖析:2025年技術標準解讀報告001
- 2025年醫(yī)院信息化建設電子病歷系統(tǒng)優(yōu)化策略研究報告
- 2025年醫(yī)院電子病歷系統(tǒng)優(yōu)化在醫(yī)院信息化建設中的數(shù)據(jù)安全防護機制研究報告
- 2025年城市地下綜合管廊建設專項債券資金申請財務分析報告
- 2025年醫(yī)藥行業(yè)CRO研發(fā)外包模式下的研發(fā)項目管理培訓與咨詢報告
- 宗教與中國化課件
- 內(nèi)江市市中區(qū)2025屆小升初必考題數(shù)學檢測卷含解析
- CNAS-CI01:2012 檢查機構能力認可準則
- 《國有企業(yè)改革與發(fā)展》課件
- 本地生活服務培訓
- 心理咨詢師考試實務能力考核試題及答案
- 高中音樂課程綱要
- 輸血相關法律法規(guī)及流程
- “五育”融合背景下小學數(shù)學教學策略探究
- 2025部編版二年級(下)期末測試語文試卷(附答案)
- 低空具身智能頻譜管控的研究
評論
0/150
提交評論