首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

file.close()失灵?该怎么解决

2012-02-10 
file.close()失灵?看看下面的代码voidmain(){fstreamfile1( test.txt ,ios::out|ios::binary),file2cha

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()) 判断是否读到文件末

热点排行