把字符串转换成整型,但是其实还是有很多条件的,比如说要消除字符串前面的无用空格
还有下面的情况要考虑到:
1.“+100”和“-122”,是ok的,字符串前面需要有正负号
2.“+98823se3”是合法的,只不过遇到第一个非数字字符时就结束计算
3.要注意整型的范围,防止溢出
#include<iostream>
using namespace std;
int myatoi(const char * str)
{
int len = strlen(str);
int sign = 1;
int i = 0;
int sum = 0;
while (str[i]== ' ')
i++;
if (str[i] == '+')
i++;
else if (str[i] == '-')
{
sign = -1;
i++;
}
for (; i < len; i++)
{
if (str[i]>'9' || str[i] < '0')//无效符号
break;
if (sum>INT_MAX / 10 || (sum == INT_MAX / 10 && str[i] - '0' > INT_MAX % 10))//溢出
return sign == -1 ? sign*INT_MIN: INT_MAX;
sum = sum * 10 + str[i] - '0';
}
return sign*sum;
}
int main()
{
char str[20];
cin >> str;
cout << myatoi(str) << endl;
system("pause");
return 0;
}