我对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();
}
答案 0 :(得分:7)
strlen
对std::string
一无所知。它是一个C函数,它返回以null结尾的字符串的长度。
幸运的是std::string
知道自己的长度。试试这个:
int len = strin.size();
或者,如果您关心字符串可能具有的尺寸范围,
std::string::size_type len = strin.size();