请考虑以下代码:
vector<__int64> vNumbers;
copy(istream_iterator<__int64>(cin), istream_iterator<__int64>(), back_inserter(vNumbers));
如果我输入1 23 45
并按Enter
,则向量将填充45,23,1,数字。
现在一个简单的问题。如何更改代码,以便在按Enter
并输入新数字时,数字也会添加到矢量中?换句话说,如何配置流迭代器的结束?
答案 0 :(得分:1)
您遇到的问题是流尽可能地读取而不会再次阻塞。只要按[Enter]
,stdin就会被操作系统刷新(在某些情况下,并非在所有情况下都是如此)。流读取直到EOF或直到无法再读取任何内容。这是每次刷新时发生的事情(一次可用的一堆新数据)。
这就是不同的人观察不同行为的原因。只要将文件传输到流中,它就会立即将整个文件提供,并且只在文件末尾停止。新行只是流的空白,相似的空格和制表符。
如果不在较低级别控制输入,则无法解决此问题。