c++判断输入类型是否为整数,,

cin<<i;
怎么判断他是不是其他字符串之类;
cin<<i;
怎么判断他是不是其他字符串之类;
cin<<i;
怎么判断他是不是其他字符串之类

第一种:


int GetInt(int nNum)
{

while(1)
{
char szBuf[255] = {'\0'};
cin>>szBuf; 
nNum = AtoI(szBuf);
if (-1 == nNum)
{
cout<<"输入了非法字符串,请输入整数"<<endl;
}
else
{
break;
}
}

return nNum;
}

int AtoI(const char *pStr)
{
int nI = 0;
int nJ = 1;
int nA = 0;

for (;nI < StrLen(pStr);nI++)
{
if ('0' > pStr[nI] || '9' < pStr[nI])
{
return -1;
}
}
for (int nK = StrLen(pStr) - 1;nK >= 0;nK--)
{
nA += (pStr[nK] - '0') * nJ;
nJ *= 10;
}

return nA;
}

int StrLen(const char *pStr)
{
int nI = 0;
while ('\0' != pStr[nI])
{
nI++;
}
return nI;
}

第二种:

 int num;
cin>>num;
if(cin.fail())
{
   //not a number;
}
else //a number

第三种:

C++中有自带的方法isdigit(c)

参考链接:

先都cin>> 到一个字符串中 一位位判断是否为数字 如果是就转为数字