C++怎么把字符串转为整数

这篇文章主要介绍“C++怎么把字符串转为整数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++怎么把字符串转为整数”文章能帮助大家解决问题。

成都创新互联公司主营绥棱网站建设的网络公司,主营网站建设方案,app软件定制开发,绥棱h5微信小程序开发搭建,绥棱网站营销推广欢迎绥棱等地区企业咨询

字符串转为整数是很常用的一个函数,由于输入的是字符串,所以需要考虑的情况有很多种。博主之前有一篇文章是关于验证一个字符串是否为数字的,参见 Valid Number。在那篇文章中,详细的讨论了各种情况,包括符号,自然数,小数点的出现位置,判断他们是否是数字。个人以为这道题也应该有这么多种情况。但是这题只需要考虑数字和符号的情况:

1. 若字符串开头是空格,则跳过所有空格,到第一个非空格字符,如果没有,则返回0.

2. 若第一个非空格字符是符号 +/-,则标记 sign 的真假,这道题还有个局限性,那就是在 c++ 里面,+-1 和-+1 都是认可的,都是 -1,而在此题里,则会返回0.

3. 若下一个字符不是数字,则返回0,完全不考虑小数点和自然数的情况,不过这样也好,起码省事了不少。

4. 如果下一个字符是数字,则转为整形存下来,若接下来再有非数字出现,则返回目前的结果。

5. 还需要考虑边界问题,如果超过了整型数的范围,则用边界值替代当前值。

C++ 解法:

class Solution {
public:
    int myAtoi(string str) {
        if (str.empty()) return 0;
        int sign = 1, base = 0, i = 0, n = str.size();
        while (i < n && str[i] == " ") ++i;
        if (i < n && (str[i] == "+" || str[i] == "-")) {
            sign = (str[i++] == "+") ? 1 : -1;
        }
        while (i < n && str[i] >= "0" && str[i] <= "9") {
            if (base > INT_MAX / 10 || (base == INT_MAX / 10 && str[i] - "0" > 7)) {
                return (sign == 1) ? INT_MAX : INT_MIN;
            }
            base = 10 * base + (str[i++] - "0");
        }
        return base * sign;
    }
};

Java 解法:

public class Solution {
    public int myAtoi(String str) {
        if (str.isEmpty()) return 0;
        int sign = 1, base = 0, i = 0, n = str.length();
        while (i < n && str.charAt(i) == " ") ++i;
        if (i < n && (str.charAt(i) == "+" || str.charAt(i) == "-")) {
            sign = (str.charAt(i++) == "+") ? 1 : -1;
        }
        while (i < n && str.charAt(i) >= "0" && str.charAt(i) <= "9") {
            if (base > Integer.MAX_VALUE / 10 || (base == Integer.MAX_VALUE / 10 && str.charAt(i) - "0" > 7)) {
                return (sign == 1) ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            }
            base = 10 * base + (str.charAt(i++) - "0");
        }
        return base * sign;
    }
}

关于“C++怎么把字符串转为整数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。


当前题目:C++怎么把字符串转为整数
网页路径:http://lszwz.com/article/iejedd.html

其他资讯

售后响应及时

7×24小时客服热线

数据备份

更安全、更高效、更稳定

价格公道精准

项目经理精准报价不弄虚作假

合作无风险

重合同讲信誉,无效全额退款