while(cin >> num)循环输入问题

深红的眼眸 2014-06-12 11:10:07
vector<int> vec1,vec2;
int num;
while(cin >> num){
vec1.push_back(num);
}
while(cin >> num){
vec1.push_back(num);
}

代码执行时,为了结束循环,输入“ctrl+Z”。问题是输入“cltr+Z”后2个循环都结束了,请问这是怎么回事,能不能只结束第一个循环,进行第二个循环的输入呢
...全文
581 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
-LanPei- 2014-06-12
  • 打赏
  • 举报
回复
不错,领教了。
www_adintr_com 2014-06-12
  • 打赏
  • 举报
回复
cin >> num 返回的并不是这个运算符这次读取成功还是失败,而是返回 cin 这个对象本身。 cin 对象由于 Ctlr+Z 的输入已经处于结束状态了,如果没有清除它就一直处于这个状态。
cwt8805 2014-06-12
  • 打赏
  • 举报
回复
在第一个循环的时候输入流遇到了文件结束符,输入流变为了结束状态,因此第二个循环无法再读取到数据直接跳出。 解决办法就是,在第二个循环前重置输入流的状态。
深红的眼眸 2014-06-12
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
在两个循环之间加入一个
cin.clear();
灰常感谢,好用,原因是什么呢?
www_adintr_com 2014-06-12
  • 打赏
  • 举报
回复
在两个循环之间加入一个
cin.clear();
深红的眼眸 2014-06-12
  • 打赏
  • 举报
回复
引用 4 楼 adlay 的回复:
cin >> num 返回的并不是这个运算符这次读取成功还是失败,而是返回 cin 这个对象本身。 cin 对象由于 Ctlr+Z 的输入已经处于结束状态了,如果没有清除它就一直处于这个状态。
谢谢了
深红的眼眸 2014-06-12
  • 打赏
  • 举报
回复
引用 3 楼 cwt8805 的回复:
在第一个循环的时候输入流遇到了文件结束符,输入流变为了结束状态,因此第二个循环无法再读取到数据直接跳出。 解决办法就是,在第二个循环前重置输入流的状态。
回答的非常好,谢谢

64,701

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧