阅读:2130回复:7
急急急急c++ 问题,大侠快进!
问个简单问题:各位老大帮帮忙:
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正常输入? 各位大侠 也许看不上这样的问题,不过还是请帮帮忙,先谢了! |
|
|
沙发#
发布于:2005-03-09 08:36
你应该在输入I后,自己对I值判断,然后处理,而不要指望系统来帮你处理.
|
|
|
板凳#
发布于:2005-03-09 09:43
问个简单问题:各位老大帮帮忙: 用个SEH,try except就不用判断,出错了,捕获重来就可以了 |
|
|
地板#
发布于:2005-03-09 13:03
To :bmyyyud 老大:
try{ .... }catch(...) { ... } 不能捕获异常,即使能够捕获异常,cin 对象也不能恢复输入,请问怎么才能使cin在出错后,可以恢复输入。 谢谢! 继续给分 |
|
|
地下室#
发布于:2005-03-09 13:16
好像
用个SEH,也不行的,我是这样用的 __try { cin>>i; } __except(...) { } 不能捕获cin异常 |
|
|
5楼#
发布于:2005-03-09 14:48
好像 不是捕获cin异常,而是在你要使用i的时候出错时捕获 |
|
|
6楼#
发布于:2005-03-10 12:16
我想知道的问题时: 在cin出错后而停止输入动作时,怎么才能恢复cin的功能。C++primer说,用cin.clear();可以做到;但我试了不行;请问怎么才能恢复。
谢谢!给分! |
|
|
7楼#
发布于:2007-07-06 10:52
rdstate()成员函数使我们能够显式地访问iostream 类对象的状态例如
ios_base::iostate old_state = cin.rdstate(); cin.clear(); process_input(); // 现在, cin 被重置为原来的状态 cin.clear( old_state ); |
|