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