C++ getline() 只读取文本文件中的最后一行

C++ getline() is only reading the last line in a text file

我正在尝试读取一个文本文件并输出每一行,但它只输出最后一行。我如何输出每一行?我的代码:

int main()
{
    std::ifstream ReadFile("example.txt");
    std::string line;
    if (ReadFile.is_open())
    {
        while (std::getline(ReadFile, line));
        {
            std::cout << line << "\n";
        }
        ReadFile.close();
    }
    else
    {
        std::cout << "Unable to open file";
    }
}

我正在按照 http://www.cplusplus.com/doc/tutorial/files/

中的示例进行操作

txt 文件内容:

This is one line
This is another line
And a third line

输出:

https://i.imgur.com/t6XXmBG.png

这里还有其他答案建议在 while 循环中添加 endl 或“\n”,但这对我来说仍然不起作用。

while 循环后有一个分号,这意味着它会继续迭代并且什么都不做,因为您有一个空语句(; 表示空语句)。这就是为什么你得到最后一行的原因,因为在最后一次(第 3 次)迭代中,行被文件的最后一行填充。

while (std::getline(ReadFile, line));

如下所示更新您的 while 循环以获得所需的结果:

while (std::getline(ReadFile, line))
    {
        std::cout << line << "\n";
    }