-
给定一个字符串,把它转换成数字。要考虑字符串为空,异常字符等多种情况。
-
算法分析;我们定义一个函数,返回bool类型,来确认是否转换成功。我们在函数参数列表中,引用要存储的数字。当int型超过最大的长度的时候记得判断是否溢出。
-
#include
using namespace std;
bool str2Int(char *ch, int &sum)
{
long long num = 0;
bool mins = true;//正负号的标志
bool cal = true;//是否while进入计算的标志
if (*ch == ‘-’)
{
mins = false;
ch++;
}
else if(*ch==’+’)
{
mins = true;
ch++;
}
while (*ch != ‘\0’)
{
cal = false;
if (*ch<‘0’ || *ch>‘9’)
{
sum = 0;
return false;
}
else
{
num = num * 10 + *ch - ‘0’;
if ((mins && num > 0x7FFFFFFF) || (!mins && -num < (signed int)0x80000000))//我们用一个long long型来保存int型,当超过int型的范围的时候,直接退出即可。
{
sum = 0;
return false;
}
}
ch++;
}
if (*ch == ‘\0’ && cal)
{
sum = 0;
return false;
}
if (mins)
{
sum = num;
}
else
{
sum = -num;
}return true;
}
int main()
{
long long num = 10000;
while (num < 0x7FFFFFFF)
{
num = num*num;
}
cout << num << endl;cout << “---------------Test 1--------------------” << endl;
int sum = 0;
if (str2Int("-789654134697788", sum))
{
cout << sum << endl;
}
else
{
cout << “Error” << endl;
}
system(“pause”);
return 0;
}
字符串转数字
最新推荐文章于 2024-10-18 15:57:31 发布