https://leetcode.com/problems/string-to-integer-atoi/
把字符串转换成数字,即实现atoi函数。坑多慎重。
class Solution {
public:
int myAtoi(string str) {
int len = str.length();
int index = 0;
while (index < len && isspace(str[index])) index++;
bool minus = false;
if (index < len && (str[index] == '-' || str[index] == '+')) {
minus = str[index] == '-';
index++;
}
long long result = 0;
// 注意!如果没有下面的强制转换,那么INT_MAX+1溢出了,变成INT_MIN
while (result <= (long long)INT_MAX + 1 && index < len && isdigit(str[index])) {
result = result * 10 + (str[index] - '0');
index++;
}
if (minus) result = -result;
// 不科学的设定
if (result < INT_MIN) return INT_MIN;
if (result > INT_MAX) return INT_MAX;
return result;
}
};
本文介绍了一个C++实现的atoi函数,用于将字符串转换为整数。该实现考虑了空格跳过、符号读取、数字字符处理及溢出情况。通过逐行分析代码,帮助读者理解其工作原理。
635

被折叠的 条评论
为什么被折叠?



