0

这段代码无限运行:

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

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

4

1 回答 1

2

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

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

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

于 2010-05-09T00:59:42.730 回答