关于C++ cin的 一个问题,谢谢大家帮忙解答。
程序是这样的:
#include <iostream>
using namespace std;
int main()
{
int n;
while(true)
{
cin>>n;
cout<<"cout"<< n<<endl;
}
return 0;
}
输出结果:
1111
cout1111
2222
cout2222
1111
cout1111
1111
cout1111
1111
cout1111
rrr
cout1111
cout1111
cout1111
cout1111
cout1111
当我输入rrr后,cin语句就没用了,然后程序一直就输出cout1111 请问有什方法能决绝这个问题?谢谢!
[解决办法]
#include <iostream>using namespace std;int main(){ int n; while(true) { cin>>n; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(),'\n'); cout<<"cout"<< n<<endl; } return 0;}
[解决办法]
因为rrr不是int型的,导致while(TRUE)死循环了。
int n;
while(cin>>n)
{
cout<<"cout"<< n<<endl;
}
return 0;
[解决办法]
具体的你可以查看C++ Primer上关于cin这一章节。你可以通过设置cin的状态位来使得cin恢复正常状态。
int main(int argc, char* argv[]){ int n; while(true) { cin>>n; if (cin.fail()) { cin.clear(); cin.sync(); continue; } cout<<"cout"<< n<<endl; } return 0;}