如何计算包括结尾新行在内的行



我已经在线搜索很长时间了,据我发现,没有正确的答案。现在最常见的答案如下:

int main() { 
    int number_of_lines = 0;
    std::string line;
    std::ifstream myfile("textexample.txt");
    while (std::getline(myfile, line))
        ++number_of_lines;
    std::cout << "Number of lines in text file: " << number_of_lines;
    return 0;
}

如果textexample.txt文件在末尾实际上有两个空行,则该程序只会数一个,我猜是第一个。如下:

123456

上面的6个数字和3个空行总计为9行,但上面的程序将返回8。

我不知道为什么,但是std::getline()似乎只循环8次。

示例中的文件有10行,其中3行为空。而且,如果我运行您的代码(丢失了...(,它告诉我有10行。因此,您要么运行不同的代码,要么正在错误地引用文件。或者您的C 标准库以某种方式破坏了...

如果我用"端"删除了线,我得到9而不是8行。