我正在研究一个用C ++处理大数字的课程。
我希望它能够进行正常的初始化,如:
Largeint A = 1934804692305674830675460730458673084576;
而不是将数字放在“”之间。
我应该如何实现这一目标?
由于评论而导致修改:
我知道如何使用大数字并使用它们进行操作。我要求的是,我只是不希望它在给它一个值时看起来像一个字符串。为什么?只是因为。
如果整数文字被绑定到编译器设置,那么无论如何我可以解决这个问题吗?
两个回答都很有趣,UDL很酷:D但是,有没有办法使用UDL而不必在后面放一个后缀?
答案 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)