用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())
按楼上使用应该即可