我想计算文件中的行数。但这里我得到的是文件+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()
失败但您没有检查的迭代。