# 题目

把字符串转换成整数

# 思路

1.功能测试

正数/复数/0

2.边界值测试

最大的正整数/最小的负整数(数据上下溢出)

3.特殊输入测试

  • 空字符串“”的处理,返回0,设置非法输入
  • 字符串只有符号位的处理,返回0,设置非法输入
  • 输入的字符串中有非数字字符,返回0,设置非法输入

# 代码

#include <iostream>
#include <string>
using namespace std;
// 67:把字符串转换成整数
class Solution {
public:
/*全局变量*/
enum {kValid,kInvalid}; // 枚举元素(kValid=0,kInvalid=1)
int g_nStatus = kValid; // 标记是否是非法输入 /*功能函数*/
int StrToInt(string str)
{
g_nStatus = kInvalid; // 初始标记为非法输入
long long num = 0; // 存储结果
const char* cstr = str.c_str();// 指向字符数组的指针 // 判断是否是空指针和空字符串""
if( (cstr != NULL) && (*cstr != '\0') )
{
// 处理符号位
int minus = 1;
if(*cstr == '-')
{
minus = -1;
cstr++;
}
else if(*cstr == '+')
{
minus = 1;
cstr++;
} // 处理其余位
while(*cstr != '\0')
{
if(*cstr > '0' && *cstr < '9')
{
// string转int类型
g_nStatus = kValid; // 标记为合法输入
num = num*10 + (*cstr -'0'); // string转换为int类型
cstr++; // 数据上下溢出
if( ((minus>0) && (num > 0x7FFFFFFF)) ||((minus<0) && (num > 0x80000000)) )
{
g_nStatus = kInvalid; // 如果溢出,则标记为非法输入
num = 0;
break;
}
}
else
{
g_nStatus = kInvalid;
num = 0;
break;
}
} if(g_nStatus == kValid)
num = num * minus; }
cout<<(int)num<<endl;
return (int)num;
}
};
int main()
{
string str = "123";
Solution solution;
solution.StrToInt(str);
return 0;
}

最新文章

  1. [LeetCode] Rotate Function 旋转函数
  2. php glob()函数实现目录文件遍历与寻找与模式匹配的文件路径
  3. java设计模式之工厂方法探究
  4. 一键系统优化15项脚本,适用于Centos6.x
  5. 突然顿悟的Javascript中的this
  6. 二分图匹配 分类: ACM TYPE 2014-10-01 19:57 94人阅读 评论(0) 收藏
  7. hdu 2087 剪花布条 KMP多次匹配
  8. Android多语言支持以及各国语言Values文件夹命名规则
  9. Java连接MySQL中文乱码处理【转载】
  10. javascript 网页图标音乐切换
  11. @PostConstruct 和 @PreDestory
  12. 妙用transform
  13. eclipse快捷键 自己使用简单总结
  14. vue.js 组件之间传递数据
  15. GIF动态图制作
  16. Linux中给普通用户添加sudo权限
  17. Android Studio3.1.2升级问题:Configuration &#39;compile&#39; is obsolete and has been replaced with &#39;implementation&#39;.
  18. Visual Studio 2017 扩展
  19. 网络编程,socket
  20. Linux下锁定账号,禁止登录系统的设置总结【转】

热门文章

  1. nfs报错 - No route to host
  2. CentOS(64位)安装apr
  3. Java数字证书操作
  4. Flask-最简单的Python http服务框架使用
  5. UVa 11038 有多少个0
  6. How to implement multiple constructor with different parameters in Scala
  7. iOS学习-字符串的删除替换
  8. 动态延迟加载网页元素jQuery插件scrollLoading
  9. 51nod-1179-最大的gcd(数学)
  10. JS判断键盘上的上下左右键