简体   繁体   English

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

[英]error: cannot convert const string to const char* for argument 1 to size_t strlen(const char*)

I'm pretty new to C++ and am very confused as to what is happening here. 我对C ++还是很陌生,对于这里发生的事情非常困惑。 The error is the line int len = strlen(strin); 错误是int len = strlen(strin); . Any suggestions how to fix this would be much appreciated. 任何建议如何解决此问题将不胜感激。

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

strlen knows nothing about std::string . strlenstd::string一无所知。 It is a C function that returns the length of a null-terminated string. 它是一个C函数,该函数返回以null结尾的字符串的长度。

Fortunately std::string knows its own length. 幸运的是std::string知道自己的长度。 Try this instead: 尝试以下方法:

int len = strin.size();

or, if you care about the range of sizes a string may have, 或者,如果您担心字符串的大小范围,

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 参数类型为:(size_t,const char [2]) - argument types are:(size_t, const char[2]) 字符串(const char *,size_t)转换为int吗? - String (const char*, size_t) to int? 错误C2664:&#39;errno_t wcstombs_s(size_t *,char *,size_t,const wchar_t *,size_t)&#39;:无法转换参数4 - error C2664: 'errno_t wcstombs_s(size_t *,char *,size_t,const wchar_t *,size_t)' : cannot convert parameter 4 无法将参数1从&#39;const char *&#39;转换为&#39;const wchar_t *&#39; - cannot convert argument 1 from 'const char *' to 'const wchar_t *' .cpp:23:错误:无法将参数&#39;1&#39;的&#39;std :: string&#39;转换为&#39;const char *&#39;到&#39;int atoi(con​​st char *)&#39; - .cpp:23: error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int atoi(const char*)’ 在 &quot;&quot; 运算符中从字符串转换为 const char* + size_t - Conversion from string to const char* + size_t in ""operator 我们会在未来的 C++ 版本中使用 size_t strlen(const char8_t*) - Will we have a size_t strlen(const char8_t*) in a future C++ version sscanf错误:无法将&#39;String&#39;转换为&#39;const char *&#39; - sscanf error: cannot convert 'String' to 'const char*' 无法将字符串转换为const char - Cannot convert string to const char 了解错误“错误:无法将&#39;char **&#39;转换为&#39;const char *&#39;以将参数&#39;1&#39;转换为&#39;double atof(const char *)&#39;” - Understanding Error “error: cannot convert ‘char**’ to ‘const char*’ for argument ‘1’ to ‘double atof(const char*)’”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM