//字符串转换成整数。不废话,贴代码。。
//在网上找到了大神July的帖子,,发现即使算法非常细腻,但是我自己在电脑上运行却不行,所以自己改了一下,应该没有问题了。
#include <iostream>#include<stdio.h>
#include <ctype.h>
using namespace std;
int strtoint( const char *str)
{
static const int MAX_INT = (int)((unsigned)~0 >> 1);
static const int MIN_INT = (int)((unsigned)~0 >> 1) - 1;
int n = 0;
int sig = 1;
while (*str++ != '\0')
{
if (str == 0)
{
return 0;
}
if(isspace(*str))
;
if((*str == '+' || *str == '-'))
{
if (*str == '-')
sig = -1;
}
if (isdigit(*str))
{
int digit = *str - '0';
if (sig > 0 && (n > MAX_INT / 10 || (n == MAX_INT / 10 && digit > MAX_INT % 10)))
{
n = MAX_INT;
break;
}
else
if (sig<0 && (n >(unsigned)MIN_INT / 10 || (n == (unsigned)MIN_INT / 10 && digit > (unsigned)MIN_INT % 10)))
{
n = MIN_INT;
break;
}
n = n * 10 + digit;
}
}
return sig > 0 ? n : -n;
}
//测试函数:
int main()
{
char str[] = " qw - 123";
long num;
num=strtoint(str);
cout << num << endl;
return 0;
}