C++ fstream、ofstream 、ifstream 文件流讀寫文件

引言

https://blog.csdn.net/f110300641/article/details/84334760
使用fstream在指定文件流模式的情況下也可以自動新建文件:

在C++中,有一個stream這個類,所有的I/O都以這個“流”類爲基礎的,包括我們要認識的文件I/O。

stream這個類有兩個重要的運算符:

  • 1、插入器(<<)  向流輸出數據

注意:只能用來插入字符串,不能插入二進制

  • 2、析取器(>>) 從流中輸入數據

在C++中,對文件的操作是通過stream的子類fstream(file stream)來實現的,所以,要用這種方式操作文件,就必須加入頭文件fstream。
 
 fstream提供三種類,實現C++對文件的操作
實所謂的流緩衝就是內存空間

ofstream

ofstream 是從內存到硬盤
寫操作,由ostream引申而來

ifstream

ifstream 是從硬盤到內存。
讀操作,由istream引申而來

fstream

fstream :同時讀寫操作,由iostream引申而來

  • ios::app:   以追加的方式打開文件
  • ios::ate:    文件打開後定位到文件尾,ios:app就包含有此屬性
  • ios::binary:   以二進制方式打開文件,缺省的方式是文本方式。兩種方式的區別見前文
  • ios::in:    文件以輸入方式打開
  • ios::out:    文件以輸出方式打開
  • ios::nocreate: 不建立文件,所以文件不存在時打開失敗
  • ios::noreplace:不覆蓋文件,所以打開文件時如果文件存在失敗
  • ios::trunc:   如果文件存在,把文件長度設爲0

可以用“|”把以上屬性連接起來,如ios::out|ios::binary

注意

  • 使用<<,>>運算符,只能進行文本文件的讀寫操作,用於二進制文件可能會產生錯誤。
  • 打開方式中必須指定ios::binary,否則讀寫會出錯
  • 用read\write進行讀寫操作,而不能使用插入、提取運算符進行操作,否則會出錯。

小結

在傳輸二進制文件的時候,最好按照傳統的,"內容 + 長度 “ 的方式,否則可能會出現問題

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