ifstream ifs的作用,ifstream和ofstream

  ifstream ifs的作用,ifstream和ofstream

  向量字符串

  ifstream inFile( F://my receive files//fill compo _ KP . mod ,IOs:in);

  while (getline(inFile,s))

  vs.push _ back

  cout vs . size()endl;

  infile . close();

  infile . open( F://my receive files//fill compo _ line . mod ,IOs:in);

  while (getline(inFile,s))

  vs.push _ back

  infile . close();

  cout vs . size()endl;

  返回0;她说只能打开第一个文件(即FillCompo_KP.mod),不能打开第二个文件(即FillCompo_Line.mod)。

  我测试了这段代码,发现确实存在这个问题,但是这段代码好像没有任何错误。我的初步判断是关闭文件后可能需要什么操作。于是我上网找资料,找了一会,终于找到一条:关闭流并不改变流对象的内部状态。如果最后一次读写操作失败,对象的状态将保持在错误模式,直到流的状态被清除操作恢复。调用clear后,就像重新创建对象一样。如果程序员需要重用一个文件流来读写多个文件,他必须在读取另一个文件之前调用clear来清除流的状态。

  所以需要在调用文件流对象的close函数后添加一段代码:infile . clear(IOs:good bit);就是这样。代码如下:

  字符串s;

  向量字符串

  ifstream inFile( F://my receive files//fill compo _ KP . mod ,IOs:in);

  while (getline(inFile,s))

  vs.push _ back

  cout vs . size()endl;

  infile . close();

  infile . clear(IOs:good bit);//ios:goodbit表示没有错误。可以继续输入或者操作。

  infile . open( F://my receive files//fill compo _ line . mod ,IOs:in);

  while (getline(inFile,s))

  vs.push _ back

  infile . close();

  cout vs . size()endl;

  返回0;

ifstream ifs的作用,ifstream和ofstream