c++ 实现atoi()函数
2016-04-18 21:02
330 查看
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语言编辑器获取数组中元素个数
- 对称矩阵 压缩存储
- C语言中各种基本数据类型在内存中的存储方式
- 栈的链式实现(C语言)
- C++ String写时拷贝(Copy On Write)
- leetcode——链表快排
- 智能指针C++
- Cuda学习笔记(四)——在vs2010中配置.cpp和.cu文件
- 【C++】C++对象内存模型简介
- 串口通信 收发数据
- 使用c++中优先级队列
- OpenCV2.4.10之samples_cpp_tutorial-code_learn-----ImgProc(图像处理)
- Minimum Window Substring
- c++语言上机指导实用教程第三章3.1练习4
- c++之引用的本质
- c++实现数组和指针的快速排序
- C/C++易错问题分析
- java和c语言一些数组差别
- C++ WINDOWS API 第2章 Windows API概要
- C++ WINDOWS API 第1章 Windows 应用程序开发入门