字符串转换成整数

//字符串转换成整数。不废话,贴代码。。

//在网上找到了大神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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值