123456789101112131415161718192021222324252627282930313233343536373839 |
- ///////////////////////////////////////////////////////////////
- // Copyright 2019 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
- //
- // We used to use lexical_cast internally for quick conversions from integers
- // to strings, but that breaks if the global locale is something other than "C".
- // See https://github.com/boostorg/multiprecision/issues/167.
- //
- #ifndef BOOST_MP_DETAIL_ITOS_HPP
- #define BOOST_MP_DETAIL_ITOS_HPP
- namespace boost { namespace multiprecision { namespace detail {
- template <class Integer>
- std::string itos(Integer val)
- {
- if (!val) return "0";
- std::string result;
- bool isneg = false;
- if (val < 0)
- {
- val = -val;
- isneg = true;
- }
- while (val)
- {
- result.insert(result.begin(), char('0' + (val % 10)));
- val /= 10;
- }
- if (isneg)
- result.insert(result.begin(), '-');
- return result;
- }
- }}} // namespace boost::multiprecision::detail
- #endif
|