1.跳过前面的空白字符(例如空格,tab缩进)等,可以通过isspace( )函数来检测;
2.遇上数字或正负符号才开始转换,而在遇到非数字或’\0’才结束转换,并将结果返回。
3.如果 ptr不能转换成 int 或者 ptr为空字符串,那么将返回 0。
4.该函数要求被转换的字符串是按十进制数理解的。
#include<iostream>
using namespace std;
int my_atoi(char* ptr)
{
if(ptr == NULL)
{
return 0;
}
int ret = 0;
int flag = 1;
while(!isspace(*ptr) == 0)
{
++ptr;
}
if(*ptr == '-')
{
flag *= -1;
}
if(*ptr == '+' || *ptr == '-')
{
++ptr;
}
while(*ptr >= '0' && *ptr <= '9')
{
ret = ((ret*10) + (*ptr - '0'));
++ptr;
}
return ret * flag;
}
int main()
{
char str1[] = "-100";
char str2[] = "100";
char str3[] = "abc";
char str4[] = "-abc";
cout<<my_atoi(str1)<<endl;
cout<<my_atoi(str2)<<endl;
cout<<my_atoi(str3)<<endl;
cout<<my_atoi(str4)<<endl;
return 0;
}