引言
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进行读写操作,而不能使用插入、提取运算符进行操作,否则会出错。
小结
在传输二进制文件的时候,最好按照传统的,"内容 + 长度 “ 的方式,否则可能会出现问题