题目:
int类型和string类型的相互转换。
bool stringToIntIsWork = true;
//注意:负数、正数带“+”号、溢出、增加全局变量标记是否运算成功
int stringToInt(const string &str)
{
stringToIntIsWork = true;
if (str.empty() || str.size()>11)
{
stringToIntIsWork = false;
return -1;
}
bool IsMinus = false;
string cur = str;
if (str[0] == '+')
{
cur = str.substr(1, str.size() - 1);
}
else if (str[0] == '-')
{
cur = str.substr(1, str.size() - 1);
IsMinus = true;
}
int len = cur.size();
long long res = 0;
for (int i = 0; i <len; i++)
{
if (cur[i]>'9' || cur[i]<'0')
{
stringToIntIsWork = false;
return -1;
}
res = res * 10 + (cur[i] - '0');
}
if (IsMinus && res>0x80000000)
{
stringToIntIsWork = false;
return -1;
}
if (!IsMinus && res > 0x7fffffff)
{
stringToIntIsWork = false;
return -1;
}
res = IsMinus ? (-1)*res : res;
return res;
}
string intToString(const int &num)
{
bool IsMinus = false;;
string res;
int cur = num;
if (num<0)
{
IsMinus = true;
if (num == 0x80000000)//注意是否为int的最小值
cur = cur + 1;
cur = -cur;
}
while (cur)
{
int tmp = cur % 10;
res.push_back(tmp + '0');
cur /= 10;
}
reverse(res.begin(), res.end());
if (IsMinus)
{
res = "-" + res;
if (num == 0x80000000)
res[res.size() - 1] += 1;
}
return res;
}