字符串转整数

#include <iostream>
#include <string>

using namespace std;

int myAtoi(string str) {
    string s = str;
    int index = 0;

    bool flag = true;
    if (str.size() == 0){
        return 0;
    }
    while (s[index] == ' '){
        index ++;
    }
    if (str[index] == '+'){
        flag = true;
        index ++;
    }
    else if (str[index] == '-'){
        flag = false;
        index ++;
    }

    long long result = 0;

    for (int i = index; i < s.size(); ++i){
        if (s[i] > '9'|| s[i] < '0'){
            break;
        }
        result *= 10;
        result += (s[i] - '0');
            
        if (result > INT_MAX){
            break;
        }
    }
    /*
    if (result == -INT_MIN && !flag){
        return INT_MIN;
    }
    */
    if (result > INT_MAX){
        return flag ? INT_MAX : INT_MIN;
    }

    return flag ? result : (-result);
}

// 简化版(仅支持正数)
int myAtoiSimplify(string str) {
  string s = str;
  long long result = 0;

  for (int i = 0; i < s.size(); ++i){
    result *= 10;
    result += (s[i] - '0');
  }

  return result;
}



int main(){
  string s = "12345";

  // 代码实现
  int res = myAtoi(s);
  int res2 = myAtoiSimplify(s);
  
  // stoi
  int res3 = stoi(s);


  int ttt = 0;
  return 0;
}







                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值