|
|
freebsd 5.3, gcc3.4.2 这样一段代码,
ifstream infile; string line;
infile.open("file1"); cout << "infile.is_open()=" << infile.is_open() << endl; cout << "infile.eof()=" << infile.eof() << endl; while(!infile.eof()){ std::getline(infile, line); } infile.close(); infile.open("file2"); cout << "infile.is_open()=" << infile.is_open() << endl; cout << "infile.eof()=" << infile.eof() << endl; infile.close();
输出的结果是,
infile.is_open()=1
infile.eof()=0
infile.is_open()=1
infile.eof()=1
而如果在file1的操作中去掉那段while的读操作,此时结果为,
infile.is_open()=1
infile.eof()=0
infile.is_open()=1
infile.eof()=0
看来close()并没有清除掉eof状态,解决的方法是调用一次clear()。
|
|