copy函数里面为什么可以用Ctrl+Z可以停止cin的输入?该如何解决
copy函数里面为什么可以用Ctrl+Z可以停止cin的输入?
下面这几行程序的作用是,当我输入若干个数字以后,按下Ctrl+Z然后连续两次回车,cin就被中止了, cout输出全部内容。
发现,如果Ctrl+Z以后,不按回车再继续输入数字,效果是,按下一次回车前输入的数字被忽略,但是cin继续执行。
我的问题是
(1)为什么是Ctrl+Z而不是Ctrl+C, Ctrl+C我发现程序就退出了。Ctrl+Z有什么特殊的含义么?
(2)为什么copy(is,intEOF,back_inserter(v));当中,v的操作是用back_inserter,而不能用v.back()?
------解决方案--------------------
ctrl+z 是结束输入,cin会读到一个文件结束符EOF
------解决方案--------------------
vector::back()返回的不是迭代器,而是最后一个元素的引用。
下面这几行程序的作用是,当我输入若干个数字以后,按下Ctrl+Z然后连续两次回车,cin就被中止了, cout输出全部内容。
- C/C++ code
stream_iterator<int>is(cin); istream_iterator<int>intEOF; vector<int>v; copy(is,intEOF,back_inserter(v)); copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
发现,如果Ctrl+Z以后,不按回车再继续输入数字,效果是,按下一次回车前输入的数字被忽略,但是cin继续执行。
我的问题是
(1)为什么是Ctrl+Z而不是Ctrl+C, Ctrl+C我发现程序就退出了。Ctrl+Z有什么特殊的含义么?
(2)为什么copy(is,intEOF,back_inserter(v));当中,v的操作是用back_inserter,而不能用v.back()?
------解决方案--------------------
ctrl+z 是结束输入,cin会读到一个文件结束符EOF
------解决方案--------------------
vector::back()返回的不是迭代器,而是最后一个元素的引用。