我正在编写自己的类(称为“ Longer”),以使其可以容纳数字,而与int相比没有任何上限。我为此使用std :: string。
我在执行加法时遇到问题。


如果我仅添加两个字符串,则无法获得正确的结果。
我想到将字符串转换为int然后执行加法,
但长字符串不能转换为int。


如何定义自己添加两个字符串的方式,以便获得所需的结果?这是代码:

更长的时间

#pragma once
#include <string>

class Longer
{
public:
   Longer(std::string number);
   Longer add(Longer num2);
   void print();
private:
   std::string number;
};


长cpp

#include "Longer.h"
#include <iostream>
#include <string>

Longer::Longer(std::string num): number(num)
{
}

Longer Longer::add(Longer num2){
  return Longer(number+num2.number);
}

void Longer::print(){
std::cout<<number<<"\n";
}


main.cpp

#include <iostream>
#include "Longer.h"

int main(){

Longer num1("123456789101112");
Longer num2("121110987654321");


Longer num3 = num1.add(num2);
num3.print();

}

最佳答案

我毫不奇怪加法不会像您预期的那样起作用。 std::string不能用作任意长数字容器,这就是为什么。

您必须定义自己的方式来“添加”两个字符串,这应包括从两个字符串(从末尾开始)向后迭代,并通过将它们解释为数字来比较单个字符。

10-07 12:05