BigNum类String构造函数错误

时间:2011-10-03 05:26:35

标签: c++ string constructor bignum

所以我正在实现一个BigNum类来处理大整数,我正在尝试修复我的字符串构造函数类。我必须能够在数组中读取诸如“-345231563567”之类的字符串,其中数字被向后读取(即765365132543)。附加代码的第一部分检查第一个字符,看它是正面还是负面,并将正面设置为true或false。代码的下一部分检查可能出现的数字中的前导零以及数字本身是否为零。最后一部分是将数字加载到数组中,由于某种原因我无法使代码工作。任何有关解决方案的帮助都非常感谢。

    BigNum::BigNum(const char strin[])
{
size_t size = strlen(strin);
positive = true;
used=0;
if(strin[0] == '+')
{
    positive = true;
    used++;
}
else if(strin[0] == '-')
{
    positive = false;
    used++;
}
else
{
    positive = true;
}

// While loop that trims off the leading zeros
while (used < size)
{
    if (strin[used] != '0')
    {
    break;
    }

    used++;
}

// For the case of the number having all zeros
if(used == size)
{
    positive = true;
    digits = new size_t[1];
    capacity = 1;
    digits[0] = 0;
    used = 1;
}
// Reads in the digits of the number in reverse order
else
{
    int index = 0;
    digits = new size_t[DEFAULT_CAPACITY];
    capacity = size - used;


    while(used < size)
    {
    digits[index] = strin[size - 1] - '0';
    index++;
    size--;
    }
    used = index + 1;
}
}

可以在这里找到BigNum.h http://csel.cs.colorado.edu/%7Eekwhite/CSCI2270Fall2011/hw2/revised/BigNum.h

和我试图使用的测试文件可以在这里找到。我没有通过测试7 http://csel.cs.colorado.edu/%7Eekwhite/CSCI2270Fall2011/hw2/revised/TestBigNum.cxx

2 个答案:

答案 0 :(得分:0)

好像你分配了你定义为20的DEFAULT_CAPACITY字节,并继续在其中放入22位数字。

答案 1 :(得分:0)

我只是试图运行你的代码,而且数字=行似乎有问题。它是一个设置为等于值的指针。可能是你的问题吗?