#include "stdafx.h"
#include "iostream"
#include "cassert"
using namespace std;
long int str_to_int(char * str)
{
assert(str != NULL);
long int sum = 0;
char flag = '0';
if(*str == '+')
{
flag = '+';
str++;
}
else if (*str == '-')
{
flag = '-';
str++;
}
while (*str != '\0' && *str >= '0' && *str <= '9')
{
if((sum -(*str - '0'))> std::numeric_limits<long int>::max()/10)//溢出检查
{
sum = 0;
cout<<"overflow!"<<endl;
return 0;
}
sum = 10 * sum + (*str - '0');
str++;
cout<<std::numeric_limits<long int>::max()<<endl;
}
if(*str != '\0')
cout<<"str include non number char!"<<endl;
else
{
if (flag == '-')
sum = sum * (-1);
return sum;
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *str = "123456789000000000";
cout<<str_to_int(str)<<endl;
return 0;
}