chengxindang
驱动牛犊
驱动牛犊
  • 注册日期2004-08-16
  • 最后登录2011-07-24
  • 粉丝0
  • 关注0
  • 积分157分
  • 威望35点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:2043回复:7

急急急急c++ 问题,大侠快进!

楼主#
更多 发布于:2005-03-08 23:00
问个简单问题:各位老大帮帮忙:
int i;
int n;
cin >> i;
cin.clear();
cin>>n ;

当在cin>>i;时输入非法值后,cin.state 置位(2),cin 输入出错而进入错误状态后 那我用cin.clear()将cin.state 复位(0),但为什么cin 还是不能正确读入n的值,即cin.state清除后,cin的读入为什么还不能恢复。
那么在in 输入出错而停止输入后我改怎么作才能恢复cin正常输入?

各位大侠 也许看不上这样的问题,不过还是请帮帮忙,先谢了!
爱,使人死亡,情,让人疯狂!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2005-03-09 08:36
你应该在输入I后,自己对I值判断,然后处理,而不要指望系统来帮你处理.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-09 09:43
问个简单问题:各位老大帮帮忙:
int i;
int n;
cin >> i;
cin.clear();
cin>>n ;

当在cin>>i;时输入非法值后,cin.state 置位(2),cin 输入出错而进入错误状态后 那我用cin.clear()将cin.state 复位(0),但为什么cin 还是不能正确读入n的值,即cin.state清除后,cin的读入为什么还不能恢复。
那么在in 输入出错而停止输入后我改怎么作才能恢复cin正常输入?

各位大侠 也许看不上这样的问题,不过还是请帮帮忙,先谢了!  

用个SEH,try except就不用判断,出错了,捕获重来就可以了
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
chengxindang
驱动牛犊
驱动牛犊
  • 注册日期2004-08-16
  • 最后登录2011-07-24
  • 粉丝0
  • 关注0
  • 积分157分
  • 威望35点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-09 13:03
 To :bmyyyud  老大:

  try{
     ....
   }catch(...)
{
...
}
不能捕获异常,即使能够捕获异常,cin 对象也不能恢复输入,请问怎么才能使cin在出错后,可以恢复输入。
谢谢! 继续给分
爱,使人死亡,情,让人疯狂!
chengxindang
驱动牛犊
驱动牛犊
  • 注册日期2004-08-16
  • 最后登录2011-07-24
  • 粉丝0
  • 关注0
  • 积分157分
  • 威望35点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-09 13:16
好像
  用个SEH,也不行的,我是这样用的
  
__try
{
cin>>i;
}
__except(...)
{


}
不能捕获cin异常
爱,使人死亡,情,让人疯狂!
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-09 14:48
好像
  用个SEH,也不行的,我是这样用的
  
__try
{
cin>>i;
}
__except(...)
{


}
不能捕获cin异常

不是捕获cin异常,而是在你要使用i的时候出错时捕获
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
chengxindang
驱动牛犊
驱动牛犊
  • 注册日期2004-08-16
  • 最后登录2011-07-24
  • 粉丝0
  • 关注0
  • 积分157分
  • 威望35点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-10 12:16
我想知道的问题时: 在cin出错后而停止输入动作时,怎么才能恢复cin的功能。C++primer说,用cin.clear();可以做到;但我试了不行;请问怎么才能恢复。
谢谢!给分!
爱,使人死亡,情,让人疯狂!
hongk111222
驱动牛犊
驱动牛犊
  • 注册日期2007-06-25
  • 最后登录2007-08-06
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望36点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-07-06 10:52
rdstate()成员函数使我们能够显式地访问iostream 类对象的状态例如
ios_base::iostate old_state = cin.rdstate();
cin.clear();
process_input();
// 现在, cin 被重置为原来的状态
cin.clear( old_state );
游客

返回顶部