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

老问题,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;//就是这里的无效。