我正在尝试istream_iterator用于从cin. 我读过按Ctrl+D发送一个EOF结束输入流的字符。不幸的是,它出了点问题。这是我的代码:
#include <iterator>
int main()
{
using namespace std;
istream_iterator<char> it(cin), eos;
while (it != eos) clog << *(it++);
}
我正在运行它并输入:as df,然后按Ctrl+ D。它只输出asd没有最后一个f,然后挂起等待输入。当我键入gh并再次按Ctrl+D时,它最后打印剩余f的,以及g下一个输入的,但又没有最后一个h。当我最终按下Ctrl+D而不输入任何内容时,它会打印剩余的内容h并退出。
我希望它能够读取asdf并退出,因为我已经在第一个序列的末尾按下了Ctrl+ 。D
为什么得到后还在等待输入EOF?
为什么它不打印之前读取的最后一个字符EOF?
为什么它只在我按Ctrl+D而不输入任何内容时才退出?
这个循环需要如何改变才能以我期望的方式运行?Ctrl(即在输入中获得+序列后立即停止阅读D,无论我之前是否输入过任何内容,并阅读所有字符直到EOF)。