文件的输入和输出

文件流的使用

(1)ifstream,由istream派生而来,提供读文件的功能。

2)ofstream,由ostream派生而来,提供写文件的功能。

(3)fstream,由iostream派生而来,提供读写同一个文件的功能。

注:可以用IO操作符(<<和>>)在文件上实现格式化的IO。还定义了两个自己的新操作--open和close

写个小程序:

ifstream input;
vector<string>::const_iterator it = files.begin(); //vector对象files包含一些要打开并读取的文件名
while (it != files.end()) {
      input.open(it->c_str());
      if (!input) //检查文件打开是否成功
            break;
      while (input >> s)
            process(s);
      input.close(); //关闭文件流
      input.clear(); //重置文件流的状态state为ok
      ++it;
}

注:

1、在创建fstream对象时,如果调用open或使用文件名做初始化式,需要传递的实参应为C风格字符串,一般把使用的文件名保存在string对象中,再调用c_str成员获取C风格字符串。

2、如果打算重用已存在的流对象,再每次使用完流对象后要关闭(close)和清空(clear)文件流。

3、调用clear后,就像重新创建了该对象一样。

文件模式

in
打开文件做读操作
out
打开文件做写操作
app
在每次写之前 找到文件尾
ate
打开文件后立即将文件 定位到 文件尾
trunc
打开文件时清空已存在的文件流
binary
以二进制模式进行IO输出

out
打开文件做读操作,删除文件中已有的数据
out | app打开文件做写操作,在文件尾写入
out | trunc与out模式相同
in打开文件做读操作
in | out打开文件做读、写操作,并定位与文件开头处
in | out | trunc打开文件做读、写操作,删除文件中已有的数据

注:

1、out、trunc、app模式只能用于指定与ofstream或fstream对象关联的文件;in模式只能用于指定与ifstream或fstream对象关联的文件。所有文件都可以用ate或binary模式打开。

2、对于用ofstream打开的文件,要保存文件中已存在的数据,唯一的方法时显示的指定app模式打开。

3、fstream对象既可以读也可以写它所关联的文件。fstream如何使用它的文件取决于打开文件时指定的模式。

4、默认情况下,fstream对象以in和out模式同时打开。

5、模式时文件的属性而不是流的属性,每次打开文件时都会设置模式。

6、打开模式的有效组合如第二个表格所示。上述所有打开模式组合还可以添加ate模式,只会改变文件打开时的初始定位,在第一次读或写之前,将文件定位于文件末尾处。

ostream outfile("file1");
ofstream outfile("file1",ofstream::out | ofstream::trunc);//效果与上一行相同
ofstream appfile("file2",ofstream::app);
fstream inout("copyOut",fstream::in | fstream::out);
ostream outfile;
outfile.open("precious",ofstream::app);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值