老有关问题,cin流又不启作用了
老问题,cin流又不启作用了!
先上代码吧。
无效的地方我注释了。好像论坛里经常有人问这样的问题,我google了一下,没看明白。
谁能帮我解释下原因。以及cin输入流不好的原因。
谢谢了!
------解决方案--------------------
cout<<"Please input your target:"<<endl;
cin.sync();
cin.clear();
cin>>target;//就是这里的无效。
先上代码吧。
- 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;//就是这里的无效。