字符串转成整型(int)

Posted zhchoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串转成整型(int)相关的知识,希望对你有一定的参考价值。

1 题目

Implement atoito convert a string to an integer.

Hint: Carefullyconsider all possible input cases. If you want a challenge, please do not seebelow and ask yourself what are the possible input cases.

Notes: It isintended for this problem to be specified vaguely (ie, no given input specs).You are responsible to gather all the input ?requirements up front.

Requirements for atoi:

The functionfirst discards as many whitespace characters as necessary until the firstnon-whitespace character is found. Then, starting from this character, takes anoptional initial plus or minus sign followed by as many numerical digits aspossible, and interprets them as a numerical value.

The string cancontain additional characters after those that form the integral number, whichare ignored and have no effect on the behavior of this function.

If the firstsequence of non-whitespace characters in str is not a valid integral number, orif no such sequence exists because either str is empty or it contains onlywhitespace characters, no conversion is performed.

If no validconversion could be performed, a zero value is returned. If the correct valueis out of the range of representable values, INT_MAX (2147483647) or INT_MIN(-2147483648) is returned.

2 分析

(1) 空字符串返回0;

(2) 去除字符串前边的0;

(3) 若遇到非数字字符则终止计算;

(4) 若求出的数越界则返回最大值或者最小值。

3 实现

int atoi(string str)
{
	int start = str.find_first_not_of(‘ ‘);
	if (start > 0)
	{
		str = str.substr(start);
	}
	int size = str.size();
	if (0 == size)
	{
		return 0;
	}

	int signal = 1;
	int i = 0;
	if (str[i] == ‘+‘)
	{
		++i;
	}
	else if (str[i] == ‘-‘)
	{
		signal = -1;
		++i;
	}

	long long res = 0;
	while (i < size)
	{
		if (str[i] < ‘0‘ || str[i] > ‘9‘)
		{
			break;
		}
		res = res * 10 + (str[i] - ‘0‘);
		if (res > INT_MAX)
		{
			return signal == 1 ? INT_MAX : INT_MIN;
		}
		++i;
	}

	return res * signal;
}


以上是关于字符串转成整型(int)的主要内容,如果未能解决你的问题,请参考以下文章

C语言中关于字符串转整型?

java 怎么把字符串转化成整型

delphi中类型转换如把一个字符串转成整型,这个装换过程执行了啥操作呢?有点不能理解

php怎么把中文的日期转换成整型

数字类型

python 入门基础2