atoi函数的实现源码:
#include <iostream>
using namespace std;
enum status{invalid=0,valid};
bool result_status=invalid;//最后最为输入是否违法的标识
int strToInt(const char* str)
{ long long num=0;
bool minus=false;
if(str!=NULL && *str!='\0')//如果不是空指针或者字符串内容不是空“”,那么就执行后面的
{
if('+'==*str)
{
str++;
}
else
if('-'==*str)
{
minus=true;
}
while('\0'!=*str)
{
if('0'<=*str&&'9'>=*str)
{
num=num*10+(*str)-'0';
if((minus==false)&&(num>0x7FFFFFFF)||(minus==false)&&(num>0x8FFFFFFF))//超过整数的最大范围终止
{
num=0;
break;
}
str++;
}
else//出现非法字符时也终止
{
num=0;
break;
}
}
}
if('\0'==*str)//如果是因为遇到'\0'退出循环,那么说明输入正确
{
if(minus)
{
num=0-num;
}
result_status=valid;
}
return (int)num;
}
int main()
{
char *str="123456";
int num=strToInt(str);
if(result_status==valid)
{
cout<<num<<endl;
}
else
{
cout<<"input invalid"<<endl;
}
system("pause");
}
itoa函数的实现源码: