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;

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: