首页 > 解决方案 > istream_iterator 复制示例一直在等待输入

问题描述

我尝试从“C++ 标准库”的第 107 页实现流迭代器的示例。我被困在这条线上:

copy (istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(coll)); 

程序在这里一直从控制台读取数据,但不会传递到下一行。我如何继续超越这一点?

标签: c++c++-standard-libraryistream-iterator

解决方案


来自 cppreference:

默认构造std::istream_iterator的称为 end-of-stream迭代器。当有效值std::istream_iterator 到达底层流的末尾时,它就等于流结束 迭代器。取消引用或增加它会进一步调用未定义的行为

加粗

换句话说,std::istream_iterator<string>(std::cin)一直持续到输入结束std::cin。这不会发生在行尾,而是发生在文件末尾。在控制台中,有特定的命令可以触发 EOF

在 UNIX 系统中是Ctrl+ D,在 Windows 中是Ctrl+ Z


推荐阅读