c++ - 从 istream 复制永远不会停止

标签 c++ istream istream-iterator

这段代码无限运行:

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

我期望的行为是当我按下 enter 时它会停止。
然而事实并非如此。
buff 是一个字符 vector 。

最佳答案

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

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

顺便说一句,这不是从控制台读取字符的常用方法。这是非常低效的(istream_iterator 为每个字符调用 operator>>)并且会因空格而出现错误。要读取一行数据条目,请改用 getline

关于c++ - 从 istream 复制永远不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796223/

相关文章:

c++ - 调整二维变量C++的大小

c++ - 区分读取循环中的失败和文件结尾

c++ - 如何将 IStream 的内容转储(写入)到文件中(图片)

c++ - 重载 >> 使用 istream

c++ - istream_iterator 和惰性求值

c++ - istream_iterator 需要左值 istringstream 吗?

c++ - 寻找 Java Graphics 替代品

c++ - 我正在使用 C++ 读写文件

c++如何读取文件并拆分它的行

c++ - 链表中多项式的导数