std::vector<int> v{};
std::istream_iterator<int> iter(std::cin), eof;
while (iter != eof) {
v.push_back(*iter);
++iter;
}
当它执行时,这个程序会忽略输入到标准输入中的第二个和第三个整数。例如,输入1 2 3 4 5 ^Z
并按 Enter 会生成一个包含 的向量1 4 5
。当输入由换行符而不是空格分隔时,也会发生同样的事情。
这是取自 C++ Primer(第 5 版,p403)的一个简单示例,所以我认为问题出在我身上。我已经坚持了几个小时,所以任何帮助将不胜感激。
编辑:我最初发布的代码不完整。 iter2(std::cin)
并且iter3(std::cin)
也在程序中,我认为此时它们只是声明,但事实证明它们是缺少输入的原因。代码应该如下所示:
std::vector<int> v{};
std::istream_iterator<int> iter(std::cin), iter2(std::cin), iter3(std::cin), eof;
while (iter != eof) {
v.push_back(*iter);
++iter;
}
吸取教训并道歉。删除这样可怕的问题是否有习惯?