读书人

老有关问题cin流又不启作用了

发布时间: 2012-06-11 17:42:22 作者: rapoo

老问题,cin流又不启作用了!
先上代码吧。

C/C++ code
#include<string>#include<vector>#include<iostream>#include<list>using namespace std;bool findtarget(int number,vector<int>::iterator itera1,vector<int>::iterator itera2)//用来寻找在两个迭代器范围内的数{    bool bvalue=false;    while(itera1!=itera2)    {        if(*itera1==number)        {            bvalue=true;            ++itera1;        }        else            ++itera1;    }    return bvalue;}void main(){    int temp;    int target;    vector<int> ivec;    list<int> ilist;    vector<int>::iterator iter1=ivec.begin();    vector<int>::iterator iter2=ivec.end();        while(cin>>temp,cin.eof())//这个我想联系一下错误处理的。    {        if(cin.bad())            throw runtime_error("IO stream corrupted");        if(cin.fail())        {            cerr<<"bad data,try again";            cin.clear();            //cin.ignore(5,' ');是不是这的问题...            continue;        }        if(temp==-1)            break;        ivec.push_back(temp);        cout<<endl;            }    cout<<"Please input your target:"<<endl;    cin>>target;//就是这里的无效。    cout<<"The result of the function is:"<<endl;    cout<<findtarget(target,iter1,iter2)<<endl;   }

无效的地方我注释了。好像论坛里经常有人问这样的问题,我google了一下,没看明白。
谁能帮我解释下原因。以及cin输入流不好的原因。
谢谢了!

[解决办法]
cout<<"Please input your target:"<<endl;
cin.sync();
cin.clear();
cin>>target;//就是这里的无效。

读书人网 >C++

热点推荐