添加两个字符列表

时间:2011-04-06 03:11:32

标签: c++ list operators override definition

在此问题中,用户输入两个数字。每个数字代表一个整数,其字符存储在列表中。我需要修改+运算符,以便程序将获取两个列表字符,将它们更改为整数,添加它们,然后将其更改回char列表。令我感到困惑的是,我知道,但希望这些代码能帮助我们解决问题:

class LongInt
{
public:
    friend LongInt operator+(const LongInt& x, const LongInt& y); //This function will add the value of the two integers which are represented by x and y's character list (val).

private:
    list<char> val; //the list of characters that represent the integer the user inputted

}

这是LongInt类的头文件。还有其他部分,例如构造函数,析构函数等,但在这种情况下,这些是唯一重要的事情。我不知道如何在实现文件中编写operator + definition的代码。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

你可以启动这样的功能:

LongInt operator+(const LongInt& x, const LongInt& y) {
    // code goes here
}

此函数定义将之外类定义(可能在.cpp实现文件中)。

在此函数中,您可以使用正常的手写添加添加参数xy(添加相应的数字对,处理任何进位等)。在本地LongInt对象中构建结果,并从operator+()函数返回计算值。

如果还没有为您决定,您需要确定val列表中的最低有效数字是还是 last 。无论哪种方式都有效,但有一种选择可能比另一种更容易(我会让你决定哪一种)。

答案 1 :(得分:1)

如果要将字符列表转换为int,可以执行以下操作:

std::list<char> digits;
int value = 0;
for(std::list<char>::iterator it = digits.begin(); 
    it != digits.end(); 
    ++it)
{
  value = value * 10 + *it - '0';
}