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

关于输入流cin的一个有关问题

2012-02-22 
关于输入流cin的一个问题我在vs2005下编译运行的#includestdafx.h #includestring#includeiostreamu

关于输入流cin的一个问题
我在vs2005下编译运行的#include   "stdafx.h "
#include   <string>
#include   <iostream>
using   namespace   std;

int   main()
{   int   c;
    try{
          cin.exceptions(ios_base::failbit|ios_base::badbit);
          cout < < "Please   input   integer ";  
          cin> > c;
          }
    catch(ios_base::failure)
    {
        if(cin.fail())
        {   cout < < "Please   reinput   integer ";//流的状态
            cout < < "cinstate   " < <cin.rdstate() < <endl;
            cin.clear();     //设置流为正确的状态   1
            cout < < "cinstate   " < <cin.rdstate()endl;//流的状态
            cin> > c;       //这行代码不能正确执行     2
        }
      }
    cout < <c < <endl;
    return   0;
}  

我想测试catch语句快,当提示Please   input   integer时,如果输入一个字母,比如s,就会进入catch语句块,但是标示为2的语句不能正确执行。我的问题是,在语句1中,我已经设置了流为正确的状态,怎么2不能正常输入整数呢?




[解决办法]
cin.clear();
cin.sync();//加这一句

热点排行