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

用getline读文件,总是多读一空行,该怎么处理

2012-02-12 
用getline读文件,总是多读一空行int i 0 while (!inputFileStream.eof()){inputFileStream.getline(lin

用getline读文件,总是多读一空行
int i = 0 ;
while (!inputFileStream.eof())
{
  inputFileStream.getline(line,sizeof(line),'\n'); 
  i++;
}

文件有10行,但是读完后i显示是11。
单步运行,发现最后多读了一空行。
如何避免这个问题了。
3X:)

 

[解决办法]
int i = 0 ; 
while (!inputFileStream.eof()) 

inputFileStream.getline(line,sizeof(line), '\n ');
i++; 


当你读到最后一行,eof标志并没有被置
所以循环被继续执行了


while (true) 

inputFileStream.getline(line,sizeof(line), '\n'); 
if (inputFileStream.eof())
{
i++; 
break;
}



[解决办法]
int i = 0 ; 
while (!inputFileStream.eof()) 

inputFileStream.getline(line,sizeof(line), '\n ');
i++; 


========================
道理很简单,循环条件不对

按常理eof该是最后一个位置。实则不然,是文件最后一个位置的下一个位置。当文件读完时,并不是eof
而再读一次的位置才是eof(文件末尾的下一个位置)(有点像容器的end())

按楼上使用应该即可

热点排行