20170912_将一个整数转换为字符串
//将给定的一个表示数字的字符串转化为整数
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
class Solution
{
public:
int myAtoi(string &str)
{
int sz=str.size(); //字符串长度
long long num=0;
if(sz==0)
return num;
else
{
bool minus=false; //表示符号位,false代表正数
string::iterator digit=str.begin();
int countminus=0; //负号的个数
while(digit<str.end() && (*digit == '+' || *digit == '-' || !('0'<=*digit || *digit<='9')))
{
if(*digit == '+')
++digit;
else if(*digit == '-')
{
++digit;
++countminus;
}
else
++digit;
}
if(countminus%2==0)
minus=false;
else
minus=true;
if(digit == str.end())
return num;
//****************************
while(digit<str.end())
{
if('0'<=*digit && *digit<='9') //逐个数字字符进行转换
{
num=num*10+(*digit-'0');
if(num>std::numeric_limits<int>::max()) //int表示的最大整数
{
num=0;
break;
}
++digit;
}
else //含有非数字字符
{
num=0;
break;
}
}
//****************************
if(digit==str.end()) //正确转转了
{
if(minus==true)
num=0-num;
return num;
}
}
}
};
int main(void)
{
string str="-0012a45";
cout<<str<<endl;
Solution object;
int res=object.myAtoi(str);
cout<<res<<endl;
system("pause");
return 0;
}