为什么我在使用getline()计算文件中的行数时得到了错误的答案

  • 本文关键字:答案 错误 文件 计算 getline c++
  • 更新时间 :
  • 英文 :


我想计算文件中的行数。但这里我得到的是文件+1中的行数作为答案。例如,如果我的文件有2行,那么我的代码将给出3行作为答案。

这是我的代码-

int c=0;
void number()
{ 
cout<<"NO. OF LINES :"<<c<<endl;
}

int main()
{
string line;
ifstream file("text1.txt");

if(file.is_open())
{
while(!file.eof())
{
getline(file,line);
cout<<line<< endl;
c++;
}
file.close();
}
number();
}

显式检查.eof()通常是错误的做法。相反,检查getline():的结果

int main()
{
string line;
ifstream file("text1.txt");

if(file)
{
while(getline(file,line))
{
cout<<line<< endl;
c++;
}
}
number();
}

CCD_ 3仅在文件已被读取时返回真";过了终点;而不是当你只阅读了所有的内容,没有进一步的。这就是为什么您得到了一个额外的迭代——getline()失败但您没有检查的迭代。

最新更新