int类型和string类型的相互转换

来源:互联网 发布:centos wifi不可用 编辑:程序博客网 时间:2024/05/25 12:21

    题目:

   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;}

0 0