Blame view

3rdparty/boost_1_81_0/boost/multiprecision/detail/itos.hpp 1.08 KB
63e88f80   Hu Chunming   提交三方库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  ///////////////////////////////////////////////////////////////
  //  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