C ++ getline仅读取文本文件中的最后一行

问题描述

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

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循环后有一个分号,这意味着它将继续进行迭代并且不执行任何操作,因为您有一个空语句(;意味着空语句)。这就是为什么在最后一次迭代(3rd)迭代中,最后一行被文件的最后一行填充的原因。

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

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

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