輸入輸出流4

 

二進制文件以基本類型數據在內存的二進制表示形式存放數據,不對寫入或讀出進行格式轉換。

二進制文件的讀寫方式由程序控制。

打開二進制文件用binary方式。

二進制文件是隨機存儲的。

 

隨機訪問流:

流的狀態表示:流的內容,長度和操作位置。

istream類操作流讀指針的成員函數:

istream & istream :: seekg(long pos);

作用 讀指針從流的起始位置向後移動由pos指定字節。

istream & istream :: seekg(long off, ios::seek_dir);

作用 讀指針從流seek_dir的位置移動off指定字節。

 

ios::seek_dir值:

cur

相對於當前讀指針所指定的當前位置

beg

相對於流的開始位置

end

相對於流的結尾處

enum ios::seek_dir{beg = 0;cur = 1;end = 2};

 

istream & istream :: tellg();

作用 返回讀指針當前位置值。

 

例子:

istream  input ;

    ……

input . seekg ( - 10 , ios :: cur ) ;

//讀指針位置以當前位置爲基準,向前移動10個字節。

input . seekg ( 10 , ios :: cur ) ;

//讀指針位置以當前位置爲基準,向後移動10個字節。

input . seekg ( -10 , ios :: beg ) ;

//讀指針從流開始位置向後移動10個字節。

input . seekg ( 10 , ios :: end) ;

//讀指針位置以流尾爲基準,向前移動10個字節。

 

ostream 類操作流瀉指針的成員函數。

 

ostream & ostream :: seekp(long pos);

作用 寫指針從流起始位置向後移動指定pos字節

ostream & ostream :: seekp(long off , ios::seek_dir);

作用 寫指針從流的seek_dir位置移動off個字節

ostream & ostream :;tellp();

作用 返回當前寫指針所在的位置值。

 

適合二進制操作的成員函數:

istream類中三個操作字節數據的成員函數

    istream & istream :: get(char &c);

        作用 從流中提取一個字節數據,更新對象c。

    int istream :: get();

        作用 函數值返回流中一個字節。

    Istream & istream :: read(char *buf,int n);

        作用 從流中提取n個字節數據,更新對象buf。

 

ostream 類中兩個操作字節數據成員函數

    ostream & ostream ::put(char c);

        作用 向流插入一個字節數據.

    ostream & ostream :: write(char *buf,int n);

        作用 向流中插入對象buf,由第二個參數指定數目字節數據。

 

例:#include <iostream> #include <fstream> using namespace std;

void main()

{

       char chararr[30],inchar[30];

        cout << "請輸入" << endl;

        cin >> chararr;

 

        //寫

        ofstream out("data.dat", ios::out|ios::binary);

        out.write(chararr, 30);

        out.close();

 

        //讀

        ifstream in("data.dat", ios::in | ios::binary);

        in.read(inchar, 30);

        cout << "從二進制文件讀取出來的:" << inchar << endl;

        in.close();

}

運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章