问题描述
我正在尝试读取文本文件并输出每一行,但仅输出最后一行。如何输出每一行?我的代码:
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”,但仍然对我不起作用。
解决方法
while循环后有一个分号,这意味着它将继续进行迭代并且不执行任何操作,因为您有一个空语句(;
意味着空语句)。这就是为什么在最后一次迭代(3rd)迭代中,最后一行被文件的最后一行填充的原因。
while (std::getline(ReadFile,line));
如下所示更新您的while循环以获得所需结果:
while (std::getline(ReadFile,line))
{
std::cout << line << "\n";
}