从istream复制永远不会停止

时间:2010-05-09 00:55:52

标签: c++ istream istream-iterator

这段代码无限运行:

copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(buff));

我期待的行为是当我按下回车时它会停止 但事实并非如此 buff是一个字符向量。

1 个答案:

答案 0 :(得分:2)

我假设你在键盘上输入内容。

回车键不表示流的结束。从cin的角度来看,这只是另一个角色。你需要提交EOF来实现这一点( Ctrl + Z 输入在Windows上和 Ctrl + 在Unix / Mac上D

顺便说一下,这不是从控制台读取字符的常用方法。这是非常低效的(每个字符istream_iterator调用operator>>)并且会用空格行为不当。要阅读一行数据输入,请改用getline