我正在编写自己的类(称为“ 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
不能用作任意长数字容器,这就是为什么。
您必须定义自己的方式来“添加”两个字符串,这应包括从两个字符串(从末尾开始)向后迭代,并通过将它们解释为数字来比较单个字符。