如何解决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";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。