引言
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進行讀寫操作,而不能使用插入、提取運算符進行操作,否則會出錯。
小結
在傳輸二進制文件的時候,最好按照傳統的,"內容 + 長度 “ 的方式,否則可能會出現問題