C++二进制文件读写操作
? ? ? ? 二進制文件的讀寫稍微麻煩一些,對二進制文件的讀寫同樣需要打開文件和關(guān)閉文件,打開和關(guān)閉方式與文本文件相同,只不過需要在打開方式上加上ios::binary以指明以二進制方式進行讀寫。
? ? ? ? 對于文本文件而言,我們只能用ofstream類定義對象用于輸出到文件,用ifstream類定義對象用于從文件中輸入,而對于二進制文件而言,除了可以這么做以外,我們還可以用fstream類定義對象既能用于從文件輸入,又能輸出到文件中。
? ? ? ? 針對二進制文件的讀寫,輸入輸出類中定義了專門的函數(shù)read和write,這兩個都是類的成員函數(shù)。
istream & read ( char * buffer, int size );ostream & write ( const char * buffer, int size ); ? ? ? ? char指針buffer是指向內(nèi)存中的一段存儲空間,size是存儲空間的大小,也即需要讀寫的內(nèi)容的字節(jié)數(shù)。
? ? ? ? 有時我們只需要獲取某個指定位置的數(shù)據(jù)而已,此時如果需要將數(shù)據(jù)全部讀入再找到對應(yīng)位置數(shù)據(jù)實在是效率太低。為此系統(tǒng)為我們提供了一些操作文件讀寫指針位置的成員函數(shù),我們可以使用這些函數(shù),將文件讀寫指針移動到指定位置并操作其中的數(shù)據(jù)。
函數(shù) 用途
| gcount ( ) | 返回最后一次輸入所讀入的字節(jié)數(shù) |
| tellg ( ) | 返回輸入指針的當(dāng)前位置 |
| seekg ( 文件中的位置 ) | |
| seekg ( 位移量, 參照位置 ) | 以參照位置為標(biāo)準(zhǔn)移動指針 |
| tellp ( ) | 返回輸出文件指針當(dāng)前位置 |
| seekp ( 文件中的位置 ) | 將輸出文件中指針移動到指定的位置 |
| seekp ( 位移量, 參照位置 ) | 以參照位置為為標(biāo)準(zhǔn)移動指針 |
? ? 二進制文件的讀寫稍微麻煩一些,對二進制文件的讀寫同樣需要打開文件和關(guān)閉文件,打開和關(guān)閉方式與文本文件相同,只不過需要在打開方式上加上ios::binary以指明以二進制方式進行讀寫。
? ? 對于文本文件而言,我們只能用ofstream類定義對象用于輸出到文件,用ifstream類定義對象用于從文件中輸入,而對于二進制文件而言,除了可以這么做以外,我們還可以用fstream類定義對象既能用于從文件輸入,又能輸出到文件中。
? ? 針對二進制文件的讀寫,輸入輸出類中定義了專門的函數(shù)read和write,這兩個都是類的成員函數(shù),它們的函數(shù)原型為:
總結(jié)
以上是生活随笔為你收集整理的C++二进制文件读写操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++:cin、cin.getline(
- 下一篇: 为什么要使用 using namespa