cin导致的死循环

eatta 2007-09-24 02:52:00
在用cin输入时,比如我定义个int a;cin>>a;这时如果我输入的数据是字母加上空格或者其它符号,会导致死循环.我想过用异常机制来解决.但是问题是,该抛出什么样的异常啊?我试过用catch(...),但还是抓不住啊.该怎么办
...全文
285 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
eatta 2007-09-24
  • 打赏
  • 举报
回复
那还有没有必要用cin.clear啊?好像这个不用也可以啊.我试了下.
你写了两个出来,是不是只选一个的?
eatta 2007-09-24
  • 打赏
  • 举报
回复
我刚直接加在cin语句后了.好像sync作用是只认第一个空格符前输入的
而我单单用clear的话还是没用的.
请说说这两个函数到底怎么用啊,谢谢
taodm 2007-09-24
  • 打赏
  • 举报
回复
没有“2个”,就一个答案。
eatta 2007-09-24
  • 打赏
  • 举报
回复
楼上的果然可行.刚试了下.一开始你没说怎么用.我就试着理解用下,果然可以.
请具体说下这两个怎么用啊?
我是这样用的,先用cin.bad()检查下,抛出异常,在处理时用cin.sync().
请问有没有必要用cin.bad()检查来抛异常?cin.sync()本身就包括了检查,可以直接加在cin语句后用?
taodm 2007-09-24
  • 打赏
  • 举报
回复
我最开始就告诉你答案了。
eatta 2007-09-24
  • 打赏
  • 举报
回复
cin不会抛,我可以自己设抛啊.刚才看了楼上几位说的.我试过用cin.bad()来检查了,然后抛出个异常.问题是,我知道了异常后应该怎么样解决了?把cin里的清空么?还是怎么样?我的cin的处在循环里,我想一直循环到输入的格式正确为止
eatta 2007-09-24
  • 打赏
  • 举报
回复
那个cin.bad()只是返回布尔类型的.
我的cin是处在一个循环里的switch里.就算我知道了cin.bad()的结果后.catch了异常,是不是要清空那个cin啊?那个cin.clear()是不是用来清空的啊?然后我想继续循环,直到输入的格式正确为止.应该怎么办啊
taodm 2007-09-24
  • 打赏
  • 举报
回复
楼主就不要瞎胡闹了,cin是不会抛异常的。
你还是找本介绍C++输入输出流的书先看看吧。
eatta 2007-09-24
  • 打赏
  • 举报
回复
直接catch(cin.bad())或者列出的其它捆绑函数?
ckt 2007-09-24
  • 打赏
  • 举报
回复
cin.fail()
cin.bad()检查下
taodm 2007-09-24
  • 打赏
  • 举报
回复
cin.clear();
cin.sync();

64,682

社区成员

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

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