Boost.Multiprecision を文字列で初期化

Boost.Multiprecision は数値以外にも文字列で初期化する事が出来ます。

[ソース]

#include <boost/multiprecision/cpp_int.hpp>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <string>


boost::multiprecision::cpp_int
operator "" _cpp_int(char const* str, std::size_t){
    return boost::multiprecision::cpp_int(str);
}

int
main(){
    typedef boost::multiprecision::cpp_int int_type;

    // char const*
    int_type n("354224848179261915075");

    // std::string
    std::string str("573147844013817084101");
    int_type m(str);
    std::cout << n + m << std::endl;
    
    return 0;
}

[出力]

927372692193078999176


より大きい数値の場合はこれで初期化する事が出来ますね。

[boost]

  • ver 1.53.0