boost/multiprecision/detail/itos.hpp
///////////////////////////////////////////////////////////////
// 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