关于C++ cin的 一个有关问题,多谢大家帮忙解答

关于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;
}