本文主要是介绍Cocos2d-X atoi() 函数的具体实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- /* 8、请编写能直接实现 int atoi(const char * pstr)函数功能的代码 */
- /************************************************************************/
- //考虑全局变量返回结果是否有效,和大数问题
- bool isToIntValid =true;
- int strToInt(const char *str)
- {
- long long num = 0;
- int mark = (*str== '-' ? -1: 1);
- long long upperBound = numeric_limits<int>::max();;
- if(mark == -1)
- ++upperBound;
- const char* temp = (*str == '+' || *str == '-') ? str + 1: str;
- for( ;*temp >= '0' && *temp <= '9'; ++temp)
- {
- num = num * 10 + *temp - '0';
- if(num > upperBound)
- {
- //越界,atoi中对于越界直接取最值
- isToIntValid = false;
- num = upperBound;
- break;
- }
- }
- if(*temp !='\0' || *str == '0')
- isToIntValid = false;
- return static_cast<int>(mark * num);
- }
- void testOfstrToInt()
- {
- assert(atoi("+1234") == strToInt("+1234"));
- assert(atoi("-1234") == strToInt("-1234"));
- assert(atoi("+aaa234") == strToInt("+aaa234"));
- assert(atoi("aaa1234") == strToInt("aaa1234"));
- assert(atoi("-1234a") == strToInt("-1234a"));
- assert(atoi("1234") == strToInt("1234"));
- assert(atoi("12a34") == strToInt("12a34"));
- assert(atoi("aaaa") == strToInt("aaaa"));
- assert(atoi("0123") == strToInt("0123"));
- //大数
- assert(atoi("123456789012345123456") == strToInt("123456789012345123456"));
- assert(atoi("-123456789012345123456") == strToInt("-123456789012345123456"));
- }
这篇关于Cocos2d-X atoi() 函数的具体实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!