4.文件流的定位(1)文件位置與定位方式流的位置以字節(jié)為單位,通常表示為一個長整數(shù),用類形符號pos_type代表。C+ +流的位置有兩種:輸入(get)位置和輸出(put)位置。輸入流只有輸入位置,流對象中標志這種位置的指針稱為輸入指針。輸出流只有輸出位置,流對象中標志這種位置的指針稱為輸出指針。輸入輸出流兩種位置都有,因而同時具備輸入指針和輸出指針:這兩個指針可以分別控制、互不干擾。對于文件流,這兩種指針可統(tǒng)稱文件指針。每一次輸入或輸出都是從指針所指定的位置處開始的,指針在輸入輸出過程中不斷移動,完成輸入或輸出 后即指向下一個需要輸入或輸出的位置。因此,在進行一般的輸入輸出操作時,指針總是向后(文件尾方向)移動。也可以通過專門的定位操作操縱指針,而且既可以向后移動,也可以向前移動,見下面的說明。C+ +流的定位方式(也就是指針移動方式)有三種,被定義為ios_base::seek_dir中的一組枚舉符號:ios_base::beg相對于文件首ios_base::cur相對于當前位置(負數(shù)表示當前位置之前)ios_base::end相對與文件尾(2)輸入定位輸入流對象中與輸入定位有關的成員函數(shù)有:●istream_type seekg(off_type off,ios_base ::seek_dir dir);按方式dir將輸入定位于相對位置off處,函數(shù)返回流對象本身的引用●pos_type tellg();返回當前的輸入位置,即從流開始處到當前位置的字節(jié)數(shù)●bool eof()const;判定輸入流是否結(jié)束,結(jié)束時返回true,否則返回false。(3)輸出定位在輸出流對象中與輸出定位有關的成員函數(shù)有:●ostream_type& seekp( pos_type pos);(絕對定位)將輸出流定位于絕對位置pos,函數(shù)返回流對象本身的引用● ostream_type& seekp(off_type off,ios_base ::seekdir dir);(相對定位)按方式dir將輸出流定位于相對位置off處,函數(shù)返回流對象本身的引用●pos_type tellp();返回當前的輸出位置(pos_type通常就是long),即從流開始處到當前位置的字節(jié)數(shù)。
5.特殊的文件流:CON和PRN以"CON"為文件名建立的輸入流所聯(lián)系的設備是鍵盤,可用于鍵盤輸入;以"CON"為文件名建立的輸出流所聯(lián)系的設備是顯示器,可用于顯示輸出。
6.有格式輸入輸出針對文件的格式化輸入輸出與針對標準設備cin和cout的輸入輸出十分相似,但仍有兩點需要注意。作為格式化輸入輸出,所操作的文件都是純文本文件,因此可以用記事本或?qū)懽职宓任谋揪庉嬈鱽頊蕚溥@樣的數(shù)據(jù)文件,以供應用程序輸入處理;應用程序通過格式化輸出所生成的數(shù)據(jù)文件也同樣可以用記事本或?qū)懽职宓任谋揪庉嬈鱽聿榭。每一個作為格式化輸入源的流對象(如cin或一個輸入文件流)都有一個流結(jié)束標記,讀到該標記即表明其后沒有更多的數(shù)據(jù)了?梢杂昧鞯某蓡T函數(shù)eof()來判斷是否讀到流結(jié)束標記。對于輸入流對象cin,可以通過在鍵盤上打入Z來插入流結(jié)束標記,但在完成輸入后,必須執(zhí)行一次cin.clear();后,cin才能繼續(xù)使用。
7.無格式輸入輸出對于無格式輸入輸出,數(shù)據(jù)的內(nèi)部存儲格式與外部存儲格式完全相同。無格式輸入輸出很多情況下是針對二進制文件的,輸入輸出需要用read函數(shù)或write函數(shù),因而要求文件是按ios_base::binary模式打開的。注意和不能用于按ios_base::binary打開的文件(二進制文件)的輸入和輸出。(1)無格式輸入無格式輸入對輸入的數(shù)據(jù)不做任何轉(zhuǎn)換,輸入流對象中有關的成員函數(shù)主要有:●int_type get();●istream_type& get(char_type& c);●istream_typegetline(char_type* s,streamsize n,char_type delim);●istream_type& getline(char_type* s,streamsize n);●istream_type&ignore(streamsize n=1,int_type delim=traits::eof())●int_type peek();●istream_type& putback(char_type c);●istream_type& read(char_type* s,streamsize n);(2)無格式輸出無格式輸出對輸出的數(shù)據(jù)不做任何轉(zhuǎn)換,輸出流對象中的有關成員函數(shù)主要有:●ostream_type& put(char c);●ostream_type& write(const char*s ,streamsize n)。
希望與更多計算機等級考試的網(wǎng)友交流,請進入計算機等級考試論壇
更多信息請訪問:考試吧計算機等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |