如何加总和减去char *数字?

时间:2012-05-23 17:42:00

标签: c++ pointers operators char

我的问题是我不知道如何总结大数(如“172839023498234792834798237494”或“-172839023498234792834798237494”)。所以我做了char* m_value我将存储这种对象。现在我想要做的是做一些基本的算术运算。我应该首先转换它还是使用itoa之类的?在我的情况下,没有其他选项,然后char *来存储数字。

Main.cpp的

int main(int argc, char *argv[])
{
    LargeNumber l1;
    LargeNumber l3("172839023498234792834798237494"); 
    LargeNumber l7("-172839023498234792834798237494"); 

    l1 = l3 + l7;  //How to do it ?

    return 0;
}

LargeNumber.h

class LargeNumber{

      public:
      LargeNumber(char* value):m_value(value)
      {}

      LargeNumber operator+(const LargeNumber&);
      private:
      char* m_value;
}

LargeNumber.cpp

LargeNumber LargeNumber ::operator+(const LargeNumber &b)
{
        return LargeNumber ( ... );  //Sum both LargeNumber ???
}

3 个答案:

答案 0 :(得分:4)

您需要使用大量算术库。 GMP是个不错的选择。您的处理器无法对此大小的数字进行原生操作,因此这些库会在软件中为您处理所有旧式数学运算。

答案 1 :(得分:3)

不要重新发明轮子,你应该使用BigInteger库。

无论如何,C字符串不是最好的方法。

答案 2 :(得分:1)

我不是使用字符串,而是将其作为int(或long)数组。操作员的算法就是你手工做的事情。