if(str == NULL || str.length()== 0)得到错误

时间:2015-08-18 13:09:15

标签: c++ atoi

以下是leetcode算法问题的代码:

class Solution {
public:
    int myAtoi(string str) {
        if(str == NULL || str.length() == 0) return 0;
        int pos = true;
        int result = 0;
        int i = 0;
        if(str.charAt(0) == '+' || str.charAt(0) == '-') {
            ++i;
            if(str.charAt(0) == '-') pos = false;
        }
        for(; i != str.length(); ++i) {
            if(str.charAt(i) >= '0' && str.charAt(i) <= '9') {
                result = result*10 + (int)(str.charAt(i)-'0');
            }
        }
        if(!pos) result=-result;
        if(result > INT_MAX) return INT_MAX;
        if(result < INT_MIN) return INT_MIN;
        return result;
    }
};

我收到了编译错误

Line 4: no match for ‘operator==’ (operand types are ‘std::string {aka std::basic_string<char>}’ and ‘long int’)

那么代码有什么问题?

2 个答案:

答案 0 :(得分:8)

strstd::string类型的对象,而不是指针,它不能是NULL。仅使用str.empty()而不是两个检查。 字符串中也没有函数charAt

答案 1 :(得分:5)

NULL是一个整数常量,通常定义为00L。您无法将字符串与int进行比较。 str.length() == 0str.empty()是两个不错的选择。