第10章輸入輸出流NEW(夏老師)_第1頁
第10章輸入輸出流NEW(夏老師)_第2頁
第10章輸入輸出流NEW(夏老師)_第3頁
第10章輸入輸出流NEW(夏老師)_第4頁
第10章輸入輸出流NEW(夏老師)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第10章 輸入輸出流 10.1 文件概述補充文件有不同類型,在程序設(shè)計中主要用到兩種文件:(1)程序文件: 包括源程序文件(后綴.cpp)、目標文件(后綴.obj)、可執(zhí)行文件(后綴.exe)(2)數(shù)據(jù)文件 文件的內(nèi)容不是程序,而是供程序運行時讀寫的數(shù)據(jù)。 本章主要討論數(shù)據(jù)文件所謂“數(shù)據(jù)文件數(shù)據(jù)文件”一般指存儲在外部介質(zhì)上數(shù)據(jù)的集合。操作系統(tǒng)以文件為單位進行管理。 輸入輸出是數(shù)據(jù)的傳輸過程,數(shù)據(jù)如流水一樣從一處流向另一處,因此常將輸入輸出形象地稱為流stream,即數(shù)據(jù)流10.1.1 文件名 一個文件要有一個唯一的文件標識,以便用戶識別和引用。文件標識包括三部分:(1) 文件路徑;(2)文件名

2、主干;(3)文件名后綴 。d:userfile1.dat“d:userfile1.dat”程序中用字符串表示為:10.1.2 文件的分類 根據(jù)數(shù)據(jù)的組織形式,數(shù)據(jù)文件可以分為ASCII文件和二進制文件。記?。簲?shù)據(jù)在內(nèi)存中是以二進制形式存儲的記?。簲?shù)據(jù)在內(nèi)存中是以二進制形式存儲的二進制文件二進制文件:如果內(nèi)存中的數(shù)據(jù)不加轉(zhuǎn)換地輸出到外存,就是二進制文件,可以認為它是存儲在內(nèi)存中的數(shù)據(jù)的映像,所以也稱之為映像文件(image file)。ASCII文件文件 :如果內(nèi)存中的數(shù)據(jù)轉(zhuǎn)換成ASCII代碼后輸出到文件,就是ASCII文件。 ACSII文件又稱文本文件(text file),每一個字節(jié)放一個字

3、符的ASII碼。數(shù)據(jù)在二進制文件與數(shù)據(jù)在二進制文件與ASCII文件中存儲方式?文件中存儲方式? 字符一律以ASCII形式存儲,數(shù)值型數(shù)據(jù)可以用ASCII碼形式存儲,也可用二進制形式存儲。如整數(shù)10000,用ASCII碼形式輸出到磁盤,則在磁盤中占5個字節(jié)(每一個字符占一個字節(jié)),而用二進制形式存儲,則在磁盤上占4個字節(jié)(用Visual C+時)。00000000000000000010011100010000內(nèi)存存儲形式:內(nèi)存存儲形式:1000000000000000000000010011100010000寫入二進制文件寫入二進制文件寫入文本數(shù)據(jù)文件寫入文本數(shù)據(jù)文件0011000100110

4、0000011000000110000001100001的ASII碼490的ASII碼4810.1.3 文件緩沖區(qū) ASCII標準采用“緩沖文件系統(tǒng)”處理數(shù)據(jù)文件,所謂緩沖文件系統(tǒng)緩沖文件系統(tǒng)是指系統(tǒng)自動地在內(nèi)存區(qū)為程序中每一個正在使用的文件開辟一個文件緩沖區(qū)。從內(nèi)存向磁盤輸出數(shù)據(jù)必須先送到內(nèi)存中的文件緩沖區(qū),裝滿緩沖區(qū)后才一起送到磁盤去;反過來,如果計算機從磁盤讀入數(shù)據(jù),則一次從磁盤文件將一批數(shù)據(jù)讀入到文件緩沖區(qū)(充滿緩沖區(qū)),然后再從緩沖區(qū)將數(shù)據(jù)逐一送到程序數(shù)據(jù)區(qū)(給程序中的變量)。輸出文件緩沖區(qū)輸入文件緩沖區(qū)程序數(shù)據(jù)區(qū)磁盤輸入輸出10.2 I/O流 C+的輸入輸出是以流(字節(jié)序列)的形式

5、進行的 。C+的輸入輸出主要有以下兩種:o 對系統(tǒng)指定的標準設(shè)備的輸入輸出,即標準標準I/O。o 以外存磁盤文件為對象進行的輸入輸出,稱為文件文件I/O10.2.1 流的分類程序標準I/O文件I/O輸出輸入輸入輸出n cin是類istream內(nèi)置的標準流類對象,能構(gòu)成從鍵盤到內(nèi)存的標準輸入流。n cout是類istream內(nèi)置的標準流類對象,能構(gòu)成從內(nèi)存到屏幕的標準輸出流。10.2.2 流對象 (1)標準流對象(2)文件流對象n 文件流對象構(gòu)成內(nèi)存到文件的輸入輸出流。從文件中讀取數(shù)據(jù)到內(nèi)存,稱為文件輸入流;從內(nèi)存數(shù)據(jù)寫入到文件,稱為文件輸出流。1標準I/O流類庫(1)基類ios(2)輸入類is

6、tream(3)輸出類ostream(4)輸入輸出類iostream2文件I/O流類庫(1)ofstream類(2)ifstream類(3)fstream 類10.2.3 輸入/輸出流類的繼承層次結(jié)構(gòu)(1)流的分類及層次關(guān)系輸入/輸出流的層次關(guān)系(2) 輸入/輸出流類庫有關(guān)的頭文件(1) iostream.h:包含對輸入輸出流進行操作的基本信息,提供無格式支持的低級輸入輸出和有格式支持的高級輸入輸出功能。(2) ifstream.h、ofstream.h、fstream.h:包含管理文件輸入輸出操作的有關(guān)信息。v 當一個程序中需要進行標準流輸入輸出操作時,當一個程序中需要進行標準流輸入輸出操作

7、時,程序中必須有:程序中必須有:#includev 當一個程序中需要進行文件輸入輸出操作時,程當一個程序中需要進行文件輸入輸出操作時,程序中必須有:序中必須有:#include /讀文件讀文件 #include /寫文件寫文件 #include /讀寫文件讀寫文件10.2.4 流操作運算符 格式: 流對象變量變量.; “”本來在C+中被定義為左位移運算符和右位移運算符,由于在文件iostream.h中對它們進行了重載,使得它們能用作標準類型數(shù)據(jù)的輸入輸出運算符。 從流中獲取數(shù)據(jù)的操作稱為提取操作,使用提取運算符“”?!啊睍詣雍雎运械目瞻鬃址?,因此無法輸入包含空格符的字符串會自動忽略所有的空

8、白字符,因此無法輸入包含空格符的字符串。如:char name20;cinname;假如輸入姓名“Tom Hanks”時,變量name中只有“Tom”向流中添加數(shù)據(jù)的操作稱為插入操作,使用插入運算符“”。格式: 流對象數(shù)據(jù)項數(shù)據(jù)項.;數(shù)據(jù)項可以是常量、變量、表達式、字符串。如:流對象a=atb=bendl;(1)字符輸入成員函數(shù)成員函數(shù)get()可以從輸入流中獲取字符,并將它存放在指定的變量中。該函數(shù)有以下兩種格式:v ch=流對象.get() v 流對象.get(ch) 函數(shù)實現(xiàn)從輸入流中讀取一個字符,賦給字符變量ch。采用第2種格式時,如果讀取數(shù)據(jù)成功則函數(shù)返回非如果讀取數(shù)據(jù)成功則函數(shù)返回

9、非0 0值值(真),否則(遇結(jié)束標志符)返回(真),否則(遇結(jié)束標志符)返回0 0值(假)。值(假)。10.2.5 流讀寫操作成員函數(shù)1數(shù)據(jù)輸入成員函數(shù)(2)字符串輸入成員函數(shù) 從輸入流中一次讀取一串字符,有以下2種方式:v流對象.get(字符數(shù)組或字符指針,字符個數(shù)n,終止字符)v流對象.getline(字符數(shù)組或字符指針,字符個數(shù)n,終止字符) 從輸入流中讀取從輸入流中讀取n n1 1個字符個字符并并自動補以自動補以00字符串結(jié)束字符串結(jié)束標志標志(共計(共計n n個字符個字符 ) ),賦給指定的字符數(shù)組(或字符指針指,賦給指定的字符數(shù)組(或字符指針指向的數(shù)組)。如果在讀取向的數(shù)組)。如果

10、在讀取n n1 1個字符之前遇到指定的終止字符,個字符之前遇到指定的終止字符,則提前結(jié)束讀取。如果讀取成功則函數(shù)返回非則提前結(jié)束讀取。如果讀取成功則函數(shù)返回非0 0值(真),否值(真),否則(遇文件結(jié)束符)返回則(遇文件結(jié)束符)返回0 0值(假)。值(假)。第三個參數(shù)缺省為換行第三個參數(shù)缺省為換行符符。 (1)字符輸出成員函數(shù)函數(shù)put()用于輸出單個字符。格式: 流對象.put(char c); put函數(shù)的參數(shù)c可以是字符或字符的ASCII碼。例如: cout.put(a); /在屏幕上顯示字符a (2)字符串輸出成員函數(shù)函數(shù)write()用于輸出一個指定長度的字符串。格式:流對象.wri

11、te(字符串,字符個數(shù)n) ;例如:cout.write(This is a book. n,20);2數(shù)據(jù)輸出成員函數(shù)【例10-1】 讀取字符輸入字符:a b cc1=ac2=c3=b#include using namespace std;void main( ) char c1,c2,c3; cout輸入字符:; c1=cin.get(); cin.get(c2); cin.get(c3); coutc1=c1endl; coutc2=c2endl; coutc3=c3endl;【例10-2】 讀取字符串#include using namespace std;void main() c

12、har str20; cout輸入一行字符串: ; cin.getline(str,20); /也可用 cin.get(str,20); coutstr=strendl;程序運行結(jié)果如下:輸入1行字符串: Hello,everyone. str= Hello,everyone.10.2.6 流寫操作格式控制成員函數(shù)數(shù)據(jù)輸出的格式控制可通過兩種途徑實現(xiàn): 使用流寫操作()、帶參數(shù)預定義格式控制符 頭文件:iomanip.h 使用由ios類定義的格式控制成員函數(shù) 頭文件:iostream.h1. 使用流操作符使用流操作符對輸出操作進行格式化對輸出操作進行格式化o不帶參數(shù)的流操縱符nendlndec

13、/oct/hex 十/八/十六進制o帶參數(shù)的流操縱符 (注意:需包含頭文件iomanip)nsetbase(int base)設(shè)置數(shù)制轉(zhuǎn)換基數(shù)為basensetfill(int ch)將填充字符設(shè)置為chnsetprecision(int p)設(shè)置數(shù)字精度nsetw(int w)將域?qū)捲O(shè)置為wnsetiosflags(fmtflags flags)開啟flags中指定的標志nresetiosflags(fmtflags flags)關(guān)閉flags中指定的標志其中,流格式狀態(tài)標志字(flags):oios:left在域中左對齊輸出,右邊顯示填充字符oios:dec指定整數(shù)應作為十進制(基數(shù)10)

14、值oios:hex指定整數(shù)應作為十六進制(基數(shù)16)值oios:showpos指定正數(shù)和負數(shù)前面分別加上+和-號oios:fixed指定浮點數(shù)以小數(shù)方式輸出oios:scientific指定浮點數(shù)輸出采用科學記數(shù)法例10-3:設(shè)置實型數(shù)的精度#include #include #include using namespace std;int main()double r = sqrt( 2.0 ); int i;cout r = r endl;/ 設(shè)置輸出為定點小數(shù)方式cout setiosflags( ios:fixed) ;cout 以定點小數(shù)方式: endl;for ( i = 0; i

15、 = 4; i+ )cout setprecision( i ) r = r endl;/ 取消定點小數(shù)輸出方式并設(shè)置為科學記數(shù)方式cout resetiosflags( ios:fixed) setiosflags( ios:scientific) ;cout 以科學記數(shù)方式,采用不同精度輸出: endl;for ( i = 0; i = 4; i+ )cout setprecision( i ) r = r endl;return 0;例例10-4:改變整數(shù)的進制:改變整數(shù)的進制#include using namespace std;int main()int n = 30;cout 整

16、數(shù): n endl;cout 以十六進制顯示為: hex n endl;cout 以十進制顯示為: dec n endl;cout 以八進制顯示為: oct n endl;return 0; 例10-5:設(shè)置輸出寬度、填充字符和對齊方式#include #include using namespace std;int main()double pi=3.14159;/ 以默認方式輸出cout pi endl;/ 設(shè)置輸出寬度后進行輸出cout setw(10) pi endl;/ 使用填充字符并設(shè)置輸出寬度后進行輸出cout setfill(*) setw(10) pi endl;/ 設(shè)置左對

17、齊方式及輸出寬度后進行輸出cout setiosflags(ios:left) setw(10) pi endl;/ 取消左對齊方式cout resetiosflags(ios:left);/ 設(shè)置右對齊方式及輸出寬度后進行輸出cout setiosflags(ios:right) setw(12) pi endl; return 0;2. 使用使用ios類的格式控制成員函數(shù)對輸出操作進行格式化類的格式控制成員函數(shù)對輸出操作進行格式化o格式化函數(shù)nwidth(w)設(shè)置顯示字段寬度為wnprecision(p) 設(shè)置浮點數(shù)精度為pnfill(ch)設(shè)置填充字符為chnsetf(flags) 設(shè)置

18、輸出格式狀態(tài)為flags其中,流格式狀態(tài)標志字(flags):oios:left在域中左對齊輸出,右邊顯示填充字符oios:dec指定整數(shù)應作為十進制(基數(shù)10)值oios:hex指定整數(shù)應作為十六進制(基數(shù)16)值oios:showpos指定正數(shù)和負數(shù)前面分別加上+和-號oios:fixed 指定浮點數(shù)以小數(shù)方式輸出oios:scientific指定浮點數(shù)輸出采用科學記數(shù)法nunsetf(flags)清除格式標記flagso其中,流格式狀態(tài)標志字(flags)同前。#include using namespace std;int main()cout.precision(4);cout.wi

19、dth(10);cout 10.12345 endl;cout.fill(*);cout.width(10);cout 10.12345 endl;cout.width(10);cout Hi! endl; cout.width(10);cout.setf(ios:left);cout 10.12345endl;cout.setf(ios:uppercase | ios:scientific);cout 10.12345endl;cout.unsetf(ios:uppercase);cout 10.12345endl;return 0;運行結(jié)果:運行結(jié)果: 10.12*10.12*Hi!10.

20、12*1.0123E+0011.0123e+001例10.6 將商品名稱與單價通過初始化賦給數(shù)組mname、 price,輸出各商品的名稱和單價,指定商品名稱域?qū)挒?0個字符、左對齊,單價為右對齊、用定點方式、小數(shù)點后有2位有效數(shù)字。分析: 浮點數(shù)默認的輸出精度為6(即輸出6位有效數(shù)字),例如浮點數(shù)3456.7891 顯示為3456.79。若要實現(xiàn)指定小數(shù)點后顯示幾位有效數(shù)字,應先用setf設(shè)置定點方式,再用成員函數(shù)precision(n)設(shè)置小數(shù)點后n位有效數(shù)字。#include using namespace std;void main() char *mname=pencil,pen,b

21、ook,pencilbox,bag; double price=1.9,17.2, 8.63, 24,65; for (int i=0;i5;i+) cout.setf(ios:left); /設(shè)置左對齊 cout.width(10);/設(shè)置域?qū)挒?0 coutmnamei; cout.unsetf(ios:left); cout.setf(ios:fixed); /設(shè)置定點方式 cout.precision(2); /設(shè)置小數(shù)點后2位有效數(shù)字 coutpricei變量 /讀操作 輸出文件流對象變量 /寫操作 文件流對象成員函數(shù)實現(xiàn)讀取 提醒:讀文件時需要測試是否到達文件結(jié)束位置。VC6.0提

22、供的成員函數(shù)eof()只能用于單個字符的讀取。如果要從文本文件中讀取通過空格或回車符分隔的多個數(shù)據(jù)項(字符串數(shù)據(jù)項或數(shù)值項)需要自己編程實現(xiàn)。關(guān)閉文件關(guān)閉文件是指撤銷文件信息區(qū)和文件緩沖區(qū),使文是指撤銷文件信息區(qū)和文件緩沖區(qū),使文件指針變量不再指向該文件,文件關(guān)閉后無法對此件指針變量不再指向該文件,文件關(guān)閉后無法對此文件進行讀寫,文件進行讀寫,對文件對文件起到保護作用。起到保護作用。(4)關(guān)閉文件 文件流對象.close( );#include #include#include using namespace std;struct student char name20;float score

23、2; ;int main() student st3=李四,90,80,王五,60,80,高大軍,50,90;char fname=text.txt;/-寫文件- ofstream outfile(fname); /定義文件輸入流對象,打開源文件 if (!outfile) cout不能打開源文件:fnameendl; return 0; for(int i=0;i3;i+) outfilesetw(10)setw(10)sti.score0 setw(10)sti.score1endl; outfile.close(); /關(guān)閉目標文件10.3.2 文本文件的寫()/讀get

24、()/-讀文件- ifstream infile(fname); /定義文件輸出流對象,打開目標文件 if (!infile) cout不能打開源文件:fnameendl; return 0; char ch; while(!infile.eof() ch=infile.get(); /從源文件中提取一個字符到變量ch中; coutch; infile.close(); /關(guān)閉源文件 return 1;補充實例1數(shù)據(jù)寫入文本文件某班有N個學生,包含學號、姓名、語文成績、數(shù)學成績、英語成績,從鍵盤輸入數(shù)據(jù),將這些信息寫入文件date.txt。#include#include#includeusi

25、ng namespace std;#define N 4struct studentchar xh10,name10;int yw,sx,yy;void main()student stN=.;/將數(shù)據(jù)寫入文件fstream file;file.open(date.txt,ios:out);for(int i=0;iN;i+)filesetw(12)sti.xhsetw(12);filesetw(12)sti.ywsetw(12)sti.sx setw(12) sti.yy設(shè)有數(shù)據(jù)文件date.txt,存放了N個學生的記錄。每個記錄包括學號、姓名、語文成績、數(shù)學成績、英語成績,

26、數(shù)據(jù)項用空白字符分隔。 從文件讀取數(shù)據(jù),求每個學生的平均成績,并按每個記錄包括學號、姓名、平均成績(保留兩位小數(shù))的方式在屏幕上對齊顯示出來。#include#include#includeusing namespace std;#define N 4struct studentchar xh10,name10;int yw,sx,yy; float ave; void main()fstream file;fstream file; student stN; /從文件中讀取數(shù)據(jù)file.open(date.txt,ios:in);for(i=0;sti.ywst

27、i.sx sti.yy;sti.ave=(sti.yw+sti.sx+sti.yy)/3.0; coutsetw(12)sti.xhsetw(12) setiosflags(ios:fixed)setprecision(2) setw(12)sti.aveendl;file.close();思考與挑戰(zhàn): 如果不知道文件記錄數(shù)怎么辦? 完 其它內(nèi)容自學實驗7:輸入輸出流程序設(shè)計o 題目(作業(yè)):將補充實例按平均平均成績排序后寫入sort.txto 要求: (1)實驗前編號程序,上機調(diào)試、改進、運行。 (2)只提交.CPP程序,共提交2個源程序,其它文件不得提交 (3)為便于作業(yè)管

28、理,文件命名規(guī)定如下:.CPP班次學號題號07120103.cpp7班12號第1章03題章次2使用成員函數(shù)進行文件的讀寫操作例10.7 使用成員函數(shù)get與put將源文件的內(nèi)容復制到目標文件中分析:先打開源文件和目標文件,依次從源文件中讀取一個字符,并將所讀字符寫入目標文件中,直到源文件中所有字符讀完為止。#include #include using namespace std;void main( ) char fname120,fname220; coutfname1; ifstream infile; / 定義文件輸入流對象 infile.open(fname1, ios:in );/

29、打開源文件 if (!infile) cout源文件不存在!fname1endl; return; coutfname2; ofstream outfile; / 定義文件輸出流對象 outfile.open(fname2,ios:out );/打開目標文件 char ch; while (infile.get(ch) /從源文件中提取一個字符到變量ch; outfile.put(ch); /將ch中的字符寫入目標文件中。 infile.close(); outfile.close();說明說明: (1)用成員函數(shù))用成員函數(shù)get獲取字符時,不跳過其中的空白字獲取字符時,不跳過其中的空白字符

30、,因此可以復制源文件中的所有字符;符,因此可以復制源文件中的所有字符; (2)while(infile.get(ch)用于判斷讀入的字符是否為文用于判斷讀入的字符是否為文件結(jié)束標識件結(jié)束標識”0”10.3.3 二進制文件的讀寫(自學) 1二進制文件的讀操作 二進制文件的讀操作是通過成員函數(shù)read()來實現(xiàn): read(read(字符數(shù)組或字符指針字符數(shù)組或字符指針, , 字節(jié)數(shù)字節(jié)數(shù) ); ); 2. 二進制文件的寫操作 二進制文件的寫操作是通過成員函數(shù)write()來實現(xiàn): write(write(字符數(shù)組或字符指針字符數(shù)組或字符指針, , 字節(jié)數(shù)字節(jié)數(shù)); ); 3測試文件結(jié)束 測試二進

31、制文件結(jié)束位置可用成員函數(shù)eof()實現(xiàn),當?shù)竭_文件結(jié)束位置時,該函數(shù)返回零值,否則返回非零值。4返回讀入數(shù)據(jù)的長度返回最近一次輸入所讀入的字節(jié)數(shù)可用成員函數(shù)gcount()實現(xiàn)?!纠?0.8】 把090度的正弦值寫到二進制文件bin.dat中#include #include # include using namespace std;void main () fstream outfile(bin.dat,ios:out | ios:binary); int i; if (!outfile) cout不能打開輸出文件n; return; double s91; for (i=0;i=90;

32、i+) si=sin(i*3.1415926/180); outfile.write(char * )s,sizeof(double) * 91); /一次寫入91個實數(shù) outfile.close();【例10.9】 從例【10.8】的程序建立的二進制文件bin.bat中讀入數(shù)據(jù),以每行5個數(shù)據(jù)的形式 顯示在屏幕上,數(shù)據(jù)輸出到小數(shù)點后15位。/*ex10.9.cpp*#include#include#includeusing namespace std;void main() double s91; int i; fstream infile(bin.dat,ios:in|ios:binar

33、y); if(!infile) cout輸入文件不存在n; return; infile.read(char*)s,sizeof(double)*91); for(i=0;i=90;i+) coutsetiosflags(ios:fixed)setprecision(15)sit; if(i+1)%5=0)coutendl; infile.close();【例10.10】 使用讀寫二進制的成員函數(shù),實現(xiàn)文件的復制。#include #include using namespace std;int main() char fname120,fname220; char buff4096; /建立

34、4K緩沖區(qū) fstream infile,outfile; coutfname1; infile.open(fname1,ios:in | ios:binary ); if (!infile) cout不能打開輸入文件:fname1endl; return(1); coutfname2; outfile.open(fname2,ios:out| ios:binary ); if (!outfile) cout目標文件fname2已存在!endl; return(2); int n; while (!infile.eof() infile.read(buff,4096); n=infile.gc

35、ount(); /取實際讀的字節(jié)數(shù) outfile.write(buff,n); /按實際讀的字節(jié)數(shù)寫入文件 infile.close(); outfile.close(); return(0);10.3.4 文件的隨機讀寫 從文件中任何位置開始進行讀或?qū)憯?shù)據(jù),這種讀寫方式稱為文件的隨機訪問或直接存取。 1文件定位 C+ 的類庫fstream中定義了兩個與文件相聯(lián)系的指針v 讀指針v 寫指針 C+的文件定位分為讀位置和寫位置的定位,對應的成員函數(shù) v seekg():設(shè)置讀位置v Seekp:設(shè)置寫位置 1 seekg函數(shù)seekg(位移量n); seekg(位移量n, 參照位置 );第1種格

36、式專用于相對文件頭指針移動n個字節(jié),第2種格式用于相對參照位置指針移動n個字節(jié)。參照位置可取三個值: io3:beg或0:文件頭。 io3:cur或1:文件指針當前的位置。 io3:end或2:文件尾。2 seekp函數(shù)文件寫操作的定位是通過成員函數(shù)seekp實現(xiàn)的。函數(shù)的格式如下:seekp(位移量n); seekp(位移量n, 參照位置 ); 第1種格式專用于相對文件頭指針移動n個字節(jié),第2種格式用于相對參照位置指針移動n個字節(jié)。3. tellg函數(shù) 返回輸入文件中文件指針的當前位置是通過成員函數(shù)tellg實現(xiàn)的,該函數(shù)的返回值為streampos類型。利用seekg和tellg可以獲取文件的大小。例如: ifstream tfile(fname, ios:in | ios:nocreate); tfile.seekg(0,ios:end); long n=tfile.te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論