将一段字符串转换为整数数字,最基本的方法就是使用 atoi 函数。如果让我们自己实现一段 atoi 函数,需要注意的细节比较多。
原始版本
首先想到的就是字符类型之间的差值。可以直接使用字符相减得到差值。
int myAtoi(char* pstr)
{
int ans = pstr[0] - '0';
return ans;
}
看起来好像很简单,但是答案就是这样么?
存在问题
- atoi 函数的输入是 const char* 类型,不是 char* 类型
- 如果出现多位数
- 如果出现负数
- 如果出现小数
- 如果输入的开头有着多余的空字符,或者产生字符串中间产生无效字符
修正版本
首先,我们需要将 const char* 类型转换为 char* 类型:
如果使用 C++,非常方便,有两种方法: