字符串转成整数的核心代码很简单,但是需要考虑的各种情况很多。
1、首位+、-的判断。
2、在+、-的溢出判断。
3、NULL、空字符串的判断。
4、数字后面出现了很多非数字的情况。atoi函数是讲前面的数字保存下来,《剑指offer》的代码则是返回0。两种情况都说的通,视情况而定吧。
5、开头出现了很多非数字,中间掺杂着数字的出现,直接返回0。
#include <iostream> using namespace std; enum{ kValid=0, kInvalid }; int status=kValid; long StrToIntCore(const char* digit, bool minus) { long num=0; while(*digit!='