Boost.Multiprecision 文字列からの変換
Boost.Multiprecisionの多倍長整数および多倍長浮動小数点数は、文字列からの変換ができます。
初期化には、explicitなコンストラクタを使用します。
文字列は、char配列、もしくはstd::stringのいずれかを受け取れます。
#include <iostream> #include <string> #include <boost/multiprecision/cpp_int.hpp> using namespace boost::multiprecision; int main() { cpp_int x("123"); cpp_int y(std::string("456")); std::cout << x << std::endl; std::cout << y << std::endl; }
123 456
再代入には、assign()メンバ関数を使用します。
#include <iostream> #include <boost/multiprecision/cpp_int.hpp> using namespace boost::multiprecision; int main() { cpp_int x; x.assign("123"); std::cout << x << std::endl; }
123
変換できない文字列が渡された場合は、std::runtime_error例外が投げられます。
#include <iostream> #include <boost/multiprecision/cpp_int.hpp> using namespace boost::multiprecision; int main() { try { cpp_int x("xyz"); } catch (std::runtime_error& e) { std::cout << e.what() << std::endl; } }
Unexpected character encountered in input.
参照:
Constructing and Interconverting Between Number Types - Boost Multiprecision Library