本文链接:http://blog.youkuaiyun.com/ncepuwanghui/article/details/23711783
C++Primer(中文版)第四版
据P253 可知,1)若读某个文件时,当读到文件结束符时,会将文件流对象的 eofbit 和 failbit 置1,流动对象发生错误,无法使用。需要调用clear()来重置流状态。
2)将文件流与新文件重新绑定时,必须先关闭当前文件,,然后打开另一个文件。
【Question】
若重用文件流对象,来读写多个文件,这时若读取一个文件结束时,会使流处于错误状态。如果只是close文件流,而不调用clear()重置流状态,然后重新打开另一个文件,这时,流仍处于错误状态,无法正常使用。
如果需要重用文件流读写多个文件,必须在读另一个文件之前调用clear()重置流状态。
以上是根据C++Primer P253得出的结论。
但是我在实际测试后发现,文件流对象调用open()打开一个文件时会自动重置流状态,而不像上面说的维持原有流状态不变。
代码如下:
#include <iostream>
#include <fstream>
#include <vector>
#include <limits>
void process(const std::string &str)
{
std::cout << str << std::endl;
}
int main(int argc, const char* argv[])
{
std::string ifile = "ifile.in";
std::string ofile = "ofile.out";
//在创建流对象的时候绑定要读写的文件
/*
std::ifstre