题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
输入例子:
+2147483647
1a33
输出例子:
2147483647
0
#include <iostream>
#include <string>
using namespace std;
int StrToInt(string str){
if(str==""||str[0]=='0') return 0;
int len=str.length();
if(len==1&&(str[0]=='+'||str[0]=='-')) return 0;
bool m;
int num;
int start;
if(str[0]=='-'){
m=false;
num=str[1]-'0';
start=2;
}else if(str[0]=='+'){
m=true;
num=str[1]-'0';
start=2;
}else{
if(str[0]<'0'||str[0]>'9')
return 0;
else{
m=true;
num=str[0]-'0';
start=1;
}
}
for(int i=start;i<len;i++){
if(i!=0&&(str[i]<'0'||str[i]>'9'))
return 0;
else{
int n=str[i]-'0';
num=num*10+n;
}
}
if(!m) num=-num;
return num;
}
int main(){
string str="-2147483647";
StrToInt(str);
system("pause");
}