大数类,初始化

时间:2014-04-20 13:09:45

标签: c++ biginteger

我正在研究一个用C ++处理大数字的课程。

我希望它能够进行正常的初始化,如:

Largeint A = 1934804692305674830675460730458673084576;

而不是将数字放在“”之间。

我应该如何实现这一目标?

由于评论而导致修改:

我知道如何使用大数字并使用它们进行操作。我要求的是,我只是不希望它在给它一个值时看起来像一个字符串。为什么?只是因为。

如果整数文字被绑定到编译器设置,那么无论如何我可以解决这个问题吗?

两个回答都很有趣,UDL很酷:D但是,有没有办法使用UDL而不必在后面放一个后缀?

2 个答案:

答案 0 :(得分:2)

使用C ++ 11,我们可以创建用户定义的文字

Largeint operator "" _largeint(const char* literal_string)
{
    Largeint largeint;

    // initialize largeint with literal string content;
    return largeint;
}

或者,如果您更喜欢可变参数模板

template<char... Cs> Largeint operator "" _largeint();

然后使用它:

Largeint largeint = 123456789012345678901234567890_largeint;

您可以使用更合适的后缀名称。

答案 1 :(得分:0)

您可以使用这样的宏:

#define MakeLargeint(VAR, N) Largeint VAR = #N;

并定义Largeint的构造函数以获取字符串。

所以你的行变为:

MakeLargeint(A ,1934804692305674830675460730458673084576)