【问题标题】:C++ getline() is only reading the last line in a text file [closed]C ++ getline()仅读取文本文件中的最后一行[关闭]
【发布时间】:2020-12-08 07:43:22
【问题描述】:

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

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/的示例

文本文件内容:

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

输出:

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

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

【问题讨论】:

  • 不同平台有不同的行尾约定。 (Windows vs old Mac vs Linux/Unix/macOS/Android/IOS)你在什么平台上,文本文件来自哪里?
  • while (std::getline(ReadFile, line));

标签: c++ file getline


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2018-05-17
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2012-07-22
    • 2021-07-29
    • 2016-03-06
    相关资源
    最近更新 更多