2010-05-09 89 views
0

这段代码无限运行:复制从未停止

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

我所期待的行为是,当我按回车键就会停止。
但它没有。
buff是一个字符的向量。

回答

2

我假设你在键盘上输入东西。

回车键不表示流的结束。这只是从cin的角度来看的另一个角色。您需要提交EOF来实现这一(按Ctrl +ž在Windows和按Ctrl +在UNIX/Mac d输入)。

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

+0

所以基本上你说的是我编码这个错误? – 2010-05-09 01:01:56

+0

是的;我已经修改了这个问题,以反映我认为你正在努力完成的事情。 – 2010-05-09 01:03:42

+0

我试过getline,但它不适用于矢量。 它适用于我cin >> tempstring;然后将其复制到矢量中,但在我看来,这是非常低效的。 – 2010-05-09 01:08:19