file.close()失灵?
看看下面的代码
void main()
{
fstream file1( "test.txt ",ios::out|ios::binary),file2;
char a( 'a ');
if(file1.fail())
{
cout < < "wrong1 " < <endl;
exit(1);
}
file1.write(&a,sizeof(a));
file1.close();
file2.open( "test.txt ",ios::in|ios::binary);
if(file2.fail())
{
cout < < "wrong2 " < <endl;
exit(1);
}
while(!file2.eof())
{
file2.read(&a,sizeof(a));
cout < <a < <endl;
}
file2.close();
}
明明只写了一个字节a进去 文件大小查看了一下也是1个字节
但是第一次读完按说file2.eof() 应该返回false了
但又读了一次。。。。。这怎么搞的?该怎么解决啊?
[解决办法]
当利用fstream进行文件操作时,不应该用eof来作为循环条件的,因为他到最后会多读一次,类似do-while(呵呵)。应该利用读到的数据进行判断,如使用getline时,可以利用
while(getline()) 判断是否读到文件末