超过C ++的最大整数数据类型

时间:2015-05-22 18:21:00

标签: c++ c++11

我正在编写一个组合计算器,对于更大的计算,我最终会遇到long long intint64_t的溢出。或许,至少可以将数字转换为这种类型:6.7090373691429E + 19?

这是我的代码:

#include <iostream>
#include <string.h>
#include <math.h>

int main() {


  std::string charset;
  int i, length; int64_t total = 0;

  std::cout << "Charset: ";
  std::cin >> charset;
  std::cout << "Length: ";
  std::cin >> length;

    for (i=0;i<(length+1);i++) {
        total += pow(charset.size(),i);
    }

    std::cout << "\nPossible combinations: " << total << std::endl;

    return 0;
}

1 个答案:

答案 0 :(得分:5)

C ++标准库不包含任意大小的整数类型。

您可以使用Boost Multiprecision。它有不同的后端,使用专用库(例如GMP)和没有外部依赖的自定义后端(cpp_int)。

编辑:公平地说,vsoftco在评论中已经提到了Boost Multiprecision。