0
这段代码无限运行:复制从未停止
copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(buff));
我所期待的行为是,当我按回车键就会停止。
但它没有。
buff是一个字符的向量。
这段代码无限运行:复制从未停止
copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(buff));
我所期待的行为是,当我按回车键就会停止。
但它没有。
buff是一个字符的向量。
我假设你在键盘上输入东西。
回车键不表示流的结束。这只是从cin的角度来看的另一个角色。您需要提交EOF来实现这一(按Ctrl +ž,在Windows和按Ctrl +在UNIX/Mac d输入)。
顺便说一句,这是不是从控制台读取字符的常用方法。这是非常低效的(istream_iterator
调用operator>>
为每个字符),并会与空白行为不当。要读取一行数据输入,请改为使用getline
。
所以基本上你说的是我编码这个错误? – 2010-05-09 01:01:56
是的;我已经修改了这个问题,以反映我认为你正在努力完成的事情。 – 2010-05-09 01:03:42
我试过getline,但它不适用于矢量。 它适用于我cin >> tempstring;然后将其复制到矢量中,但在我看来,这是非常低效的。 – 2010-05-09 01:08:19