class Solution
{
public:
int myAtoi(string s)
{
long res = 0;
int flag = 1;//正负号
int index = 0;
while(index < s.size() && s[index] == ' ')//去除空格
{
++index;
}
if(s[index] == '+')//记录正负号
{
flag = 1;
++index;
}
else if(s[index] == '-')
{
flag = -1;
++index;
}
else if(s[index] < '0'|| s[index] > '9')//出现非法字符
{
return 0;
}
while(index < s.size() && s[index] >= '0' && s[index] <= '9')
{
if((res - 1) > INT_MAX)//数字已超出范围,需要截断
{
break;
}
res = res * 10 + s[index] - '0';
++index;
}
res *= flag;
if(res > INT_MAX)
{
return INT_MAX;
}
if(res < INT_MIN)
{
return INT_MIN;
}
return res;
}
};
8. 字符串转换整数 (atoi)
最新推荐文章于 2024-10-16 10:13:45 发布
该博客详细介绍了如何使用C++编写一个名为`Solution`的类,该类包含一个成员函数`myAtoi`,该函数将输入的字符串转换为整数。在处理过程中,函数首先移除前导空格,然后判断正负号,接着解析数字,同时检查是否超出整数范围。若遇到非法字符或数字溢出,函数会返回相应结果。此函数实现了类似于标准库`atoi`的功能,但增加了对溢出和非法字符的处理。
摘要由CSDN通过智能技术生成