错误:无法将const字符串转换为参数1的const char *到size_t strlen(const char *)

时间:2014-03-10 23:07:30

标签: c++

我对C ++很陌生,对于这里发生的事情感到非常困惑。错误是行int len = strlen(strin);。任何建议如何解决这个问题将非常感激。

BigNum::BigNum(const std::string& strin)
{
    digits = NULL;

    int len = strlen(strin);

    if (len == 0)
    {
        BigNum zero;
        *this = zero;
        return;
    }

    used = len;
    positive = true;

    int i = 0;

    if(strin[i] == '-')  
    {
        positive = false;
        i = 1;
        used--;
    }
    else if(strin[i] == '+')  
    {
        i = 1;
        used--;
    }

    capacity = double_up_default(used);

    digits = new unsigned int[capacity];

    for(unsigned int k = 0; k < used; ++k) 
    {
        digits[used - k - 1] = strin[i++] - '0';
    }

    trim();
}

1 个答案:

答案 0 :(得分:7)

strlenstd::string一无所知。它是一个C函数,它返回以null结尾的字符串的长度。

幸运的是std::string知道自己的长度。试试这个:

int len = strin.size();

或者,如果您关心字符串可能具有的尺寸范围,

std::string::size_type len = strin.size();