c++ 实现atoi()函数
2015-07-15 19:37
316 查看
1. 问题描述
实现c++函数库中atoi()函数,要考虑到各种特殊情况:空字符串。
+和-号。
字符串前中后n个空格。
溢出。
非数字字符。
2. 解决方案
转换过程并不复杂,复杂的是要考虑到众多特殊情况。int myAtoi(string str) { if(str.length() == 0) return 0; //空串 bool isNeg = false; long re = 0; int i=0,cnt; for(;i<str.length(); i++) if(str[i] != ' ') break; //跳过字符串前所有的空格 if(str[i] == '-') //判断正负 isNeg = true; else if (str[i] == '+') isNeg = false; else if(str[i] >= '0' && str[i] <= '9') re = str[i] - '0',cnt=1; //记录数字的位数 else return 0; i++; for(; i < str.length(); i++) { if (cnt > 10) break; //大于整数所表示的最大位数,跳出循环 if(str[i] < '0' || str[i] > '9') break; re = re*10 + (str[i] - '0'),cnt++; } //溢出判断 if(re > INT_MAX && !isNeg) return INT_MAX; else if(isNeg &&re*(-1) < INT_MIN) return INT_MIN; return isNeg?re*(-1):re; }
相关文章推荐
- c++ uniform_int_distribution 类
- 第六章总结
- c语言单向列表的创建、插入、删除、排序和遍历。。。
- iOS C语言2_分支结构
- c语言中的有符号数和无符号数
- C++中多态中构造函数与析构函数的调用
- c++三种野指针
- C++学习 C/C++之回调函数
- 黑马程序员-IOS基础之浅谈C语言指针
- c语言程序内存模型
- C/C++程序设计03(宏,const,sizeof,内联函数)
- C++中以固定分隔符分割CString字符串
- c++中的string分割
- C++入门经典 笔记(第二章)程序的组成部分
- 快速傅里叶变化C++实现
- C语言统计输入的单词个数
- C/C++:函数的编译方式与调用约定以及extern “C”的使用
- c++ 中的static
- C语言的struct/union字节对齐
- C++实现数字媒体三维图像渲染