您的位置:首页 > 其它

把字符串转换成整数

2015-09-08 15:04 423 查看
bool g_Invalid = true;
long long strToIntCore(const char* str, bool minus)
{
	long long num = 0;
	while(*str != '\0')
	{
		if(*str >= '0' && *str <= '9')
		{
			int flag = minus ? -1 : 1;
			num = num * 10 + flag * (*str - '0');
			if((!minus && num > 0x7FFFFFFF) ||(minus && num < (signed int)0x80000000) )
			{
				num = 0;
				break;
			}
			str++;
		}else
		{
			num = 0;
			break;
		}
	}

	if(*str == '\0')
		g_Invalid = false;

	return num;
}

int strToInt(const char* str)
{
	long long num = 0;
	if(str != NULL && *str != '\0')
	{
		bool minus = false;
		if(*str == '+')
			str++;
		else if(*str == '-')
		{
			str++;
			minus = true;
		}
		if(*str != '\0')
			num = strToIntCore(str,minus);
	}
	return (int)num;
}

// ====================测试代码====================
void Test(char* string)
{
    int result = strToInt(string);
    if(result == 0 && g_Invalid == true)
        printf("the input %s is invalid.\n", string);
    else
        printf("number for %s is: %d.\n", string, result);
}

int main(int argc, char* argv[])
{
    Test(NULL);

    Test("");

    Test("123");

    Test("+123");
    
    Test("-123");

    Test("1a33");

    Test("+0");

    Test("-0");

    //有效的最大正整数, 0x7FFFFFFF
    Test("+2147483647");    

    Test("-2147483647");

    Test("+2147483648");

    //有效的最小负整数, 0x80000000
    Test("-2147483648");    

    Test("+2147483649");

    Test("-2147483649");

    Test("+");

    Test("-");

    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: