首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

copy函数里面为什么可以用Ctrl+Z可以停止cin的输入?该如何解决

2012-03-12 
copy函数里面为什么可以用Ctrl+Z可以停止cin的输入?下面这几行程序的作用是,当我输入若干个数字以后,按下C

copy函数里面为什么可以用Ctrl+Z可以停止cin的输入?
下面这几行程序的作用是,当我输入若干个数字以后,按下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()返回的不是迭代器,而是最后一个元素的引用。

热点排行