C++数据输入类型判断

请问假如我要输入一个整型int n
我要对输入的数据进行合法性检测,如果输入的不是整型,就会报错,然后重新输入,
我该怎么弄啊

参考学习:

#include <limits>

#include <iostream>
using namespace std;

int main() {
    int n;
    while (true) {
        cout << "请输入一个整数:";
        cin >> n;
        if (cin.fail()) { // 输入失败
            cin.clear(); // 清除输入缓冲区
            cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略当前行剩余部分
            cout << "输入错误,请重新输入" << endl;
        } else {
            break; // 输入成功,跳出循环
        }
    }
    cout << "输入的整数为:" << n << endl;
    return 0;
}

使用了while循环来读取并检测输入的整数,其中cin.fail()函数用来判断输入是否成功,如果输入失败,则需要使用cin.clear()清除输入缓冲区,并使用cin.ignore()忽略当前行剩余部分,防止之后的输入操作也受到影响。如果输入成功,则跳出循环并输出输入的整数。

int n;
while (scanf("%d", &n) != 1)
{
printf("输入不正确,请重新输入\n");
fflush(stdin);
}


#include <iostream>
using namespace std;
int main(){
     int a;
     cin >> a;
     do{
            cout<<"数据类型错误!"<<endl;
              cin>>a;
    }while(!a.good());
     return 0;
}