为什么这条线是无限的循环
Why is this line infinite loop?
以下用于读取文件工作并立即完成的代码。
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; }
我的程序在当时的循环中永远运行。为什么要无限循环?我正在使用Xcode C 11。
因为每次在循环时调用 std::getline
时,新的 std::ifstream(src)
都会初始化,并且您始终获得文件的第一行。
while (std::getline(std::ifstream(src), line)) { dst << line << std::endl; }
因为您在每个循环运行中初始化流。
这是由于函数getline(stream, string)
在流中的第一行而引起的。当您进行ifstream(src)
时,您将创建一个新流并从头开始。
希望这有帮助
相关文章:
- 过载'operator new'如何导致无限循环?
- C++正则表达式无限循环
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 遍历链表时的无限循环
- 循环链表:无限循环
- 比较两个字符串后卡在无限循环中
- 在做一段时间内检查字符的无限循环
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 在这个无限循环中,当输入 0 时终止,当输入 int 范围之外的任何内容时,程序行为不正常
- 可能的无限循环
- 超出 int 的值范围后的无限循环
- 为什么这段代码会导致无限循环?
- 运行无限循环的最小二叉树问题
- 在分配和发布递增循环迭代器时C++无限循环(gcc 错误?
- 连接线程时的无限循环
- 为什么这种方法会进入无限循环?
- 由于QTextStream的无限循环
- Qt 在另一个线程中无限循环
- 从文件 C++ 读取时的无限循环
- 试图找出为什么我的代码保持无限循环