读书人

关于C++ cin的 一个有关问题多谢大家

发布时间: 2012-05-09 12:13:59 作者: rapoo

关于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 请问有什方法能决绝这个问题?谢谢!

[解决办法]

C/C++ code
#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恢复正常状态。
C/C++ code
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;} 

读书人网 >C++

热点推荐