ofstream

打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:

  • ios::app:   以追加的方式打开文件
  • ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性
  • ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
  • ios::in:    文件以输入方式打开(文件数据输入到内存)
  • ios::out:   文件以输出方式打开(内存数据输出到文件)
  • ios::nocreate: 不建立文件,所以文件不存在时打开失败
  • ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
  • ios::trunc:  如果文件存在,把文件长度设为0

ofstream流

  • ios::app,如果没有文件,那么生成空文件;如果有文件,那么在文件尾追加。
  • ios::app | ios::in,不管有没有文件,都是失败。 ios::app不能用来打开输入流,即不能和ios::in相配合
  • ios::ate,如果没有文件,那么生成空文件;如果有文件,那么清空该文件
  • ios::ate | ios::in,如果没有文件,那么打开失败;如果有文件,那么定位到文件尾,并可以写文件,但是不能读文件

ifstream流

  • ios::app,不管有没有文件,打开都是失败;
  • ios::ate,如果没有文件,打开失败;如果有文件,打开成功,并定位到文件尾,但是不能写文件

fstream流

  • 默认是ios::in,所以如果没有文件,ios::app和ios::ate都是失败,
  • ios::app | ios::out,如果没有文件则创建文件,如果有文件,则在文件尾追加
  • ios::ate | ios::out,如果没有文件则创建文件,如果有,则清空文件。
  • ios::ate | ios::out | ios::in,如果没有文件,则打开失败,有文件则定位到文件尾

每个文件流都应与一个打开的文件相联系:

1
2
3
4
5
6
7
8
9
10
// (1)在建立文件流对象的同时打开文件:
ifstream fin("d:\\sav\\datafile.dat");

// (2)先建立文件流对象,再在适当的时候打开文件:
ifstream fin;
// ......
fin.open(("d:\\sav\\datafile.dat");

// 关闭流
fin.close();
------ 本文结束------
赞赏此文?求鼓励,求支持!
  • 本文标题: ofstream
  • 本文作者: Jiang.G.F
  • 创建于: 2019年12月21日 - 22时12分
  • 更新于: 2020年03月03日 - 11时03分
  • 本文链接: https://gfjiangly.github.io/C++/ofstream.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
0%