剑指offer--字符串转换为整数
2013-05-23 08:27
441 查看
最近在准备找工作,正在看剑指offer,看到一个简单的字符串转换为整数的题
现有可以实现的函数
1.
2.
3.
其实挺简单的,但是考虑的要比较多
1.带符号的情况
2.含有不能转换为整数的字符
3.越界的情况
写了一小段代码,实现了功能,但是在逻辑上似乎并不十分的清晰,希望大家批评指正
运行结果:
现有可以实现的函数
1.
#include <stdlib.h> int atoi( const char *str );
2.
sscanf(str,"%d",&num)
3.
#include<sstream> char *str="123"; int num; stringstream ss(str); ss>>num;
其实挺简单的,但是考虑的要比较多
1.带符号的情况
2.含有不能转换为整数的字符
3.越界的情况
写了一小段代码,实现了功能,但是在逻辑上似乎并不十分的清晰,希望大家批评指正
#include "stdafx.h" #include <iostream> using namespace std; bool str2int(const char *str,int &n) { bool negative=false; int num=0,tempnum=0; const char *strorigin=str; if(str==NULL) return false; if(*str=='-') { negative=true; str++; } if(*str=='+') { negative=false; str++; } if(*str==0) //空字符串 return false; if(strlen(str)>10) //最大2147483647 最小-2147483648 超过10位肯定越界 { cout<<"error:字符串"<<strorigin<<"所表示的数字大于10位,超过int范围"<<endl; return false; } while(*str!=0) { if(*str>='0'&&*str<='9') { num=10*num+*str-'0'; if(num<tempnum) { if(negative&&num==0x80000000) { n=num; cout<<"success:"<<n<<endl; return true; } else { cout<<"error:字符串"<<strorigin<<"所表示的数字过大,超过int范围"<<endl; return false; } } tempnum=num; str++; } else { cout<<"error:字符串"<<strorigin<<"中包含非数字字符!"<<endl; num=0; return false; } } if(negative) n=num*(-1); else n=num; cout<<"success:"<<n<<endl; return true; } int _tmain(int argc, _TCHAR* argv[]) { char *str1="-10"; char *str2=NULL; bool flag; int n=0xFFFFFFFF; int n1=0x80000000; //临界 flag=str2int("-2147483648",n); flag=str2int("2147483647",n); //越界 flag=str2int("2147483648",n); flag=str2int("-2147483649",n); flag=str2int("-2147483649345",n); //正常 flag=str2int("0",n); flag=str2int("-1000",n); flag=str2int("1000",n); flag=str2int(str2,n); //NULL flag=str2int("",n); //空字符串 flag=str2int("12abc",n); system("pause"); return 0; }
运行结果:
相关文章推荐
- 剑指offer 把字符串转换成整数
- 【剑指Offer学习】【面试题49:把字符串转换成整数】
- 剑指offer — 字符串转换为整数
- 剑指offer 面试题49 把字符串转换成整数
- 剑指offer--把字符串转换成整数
- 剑指Offer--049-把字符串转换成整数
- 剑指Offer学习总结-把字符串转换成整数
- 剑指offer-把字符串转换为整数
- 【剑指offer】面试题67:把字符串转换成整数
- (C++)剑指offer-49:把字符串转换成整数(综合)
- 剑指offer-把字符串转换成整数
- 剑指Offer - 九度1508 - 把字符串转换成整数
- 剑指offer 面试题49 把字符串转换成整数
- 剑指offer之字符串到整数的转换,例如输入字符串12345,输出整数12345.
- 剑指offer---把字符串转换为整数(49)
- 剑指offer-----将一个字符串转换成对应的整数(模拟atoi)
- 剑指offer面试题49 把字符串转换成整数 (java实现)
- 【剑指Offer面试编程题】题目1508:把字符串转换成整数--九度OJ
- 剑指Offer 49 把字符串转换成整数
- 【剑指offer】题目1508:把字符串转换成整数