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;