【发布时间】:2017-12-22 11:52:14
【问题描述】:
以下用于读取文件的代码立即生效并完成。
auto copy = [&](const FileName &src, std::ofstream &dst)
{
std::ifstream r(src);
std::string line;
while (std::getline(r, line)) { dst << line << std::endl; }
};
src 是一个小文件,dst 是一个工作输出流。如果我将循环更改为:
while (std::getline(std::ifstream(src), line)) { dst << line << std::endl; }
我的程序一直在 while 循环中运行。为什么要无限循环?我正在使用 Xcode C++11。
【问题讨论】:
-
你可以输出行。对我来说,这看起来有点像您一直只阅读第一行,因为您似乎总是创建一个新的 ifstream,因此没有保留指针/迭代器并将其设置为任何下一行。
-
这并没有解决问题,但是您真的需要
std::endl需要的额外内容吗?'\n'结束一行。