这段代码无限运行:
copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(buff));
我期待的行为是当我按下回车时它会停止 但事实并非如此 buff是一个字符向量。
答案 0 :(得分:2)
我假设你在键盘上输入内容。
回车键不表示流的结束。从cin的角度来看,这只是另一个角色。你需要提交EOF来实现这一点( Ctrl + Z ,输入在Windows上和 Ctrl + 在Unix / Mac上D 。
顺便说一下,这不是从控制台读取字符的常用方法。这是非常低效的(每个字符istream_iterator
调用operator>>
)并且会用空格行为不当。要阅读一行数据输入,请改用getline
。