📄 integer_to_string.hpp
字号:
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_uint32_t i)
{
return unsigned_integer_to_string(buf, cchBuf, i);
}
#ifdef STLSOFT_CF_64BIT_INT_SUPPORT
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_sint64_t const& i)
{
#ifdef STLSOFT_INTEGER_TO_STRING_OPTIMISE_64BIT
if(i < 0x80000000)
{
return signed_integer_to_string(buf, cchBuf, static_cast<ss_sint32_t>(i));
}
#endif // STLSOFT_INTEGER_TO_STRING_OPTIMISE_64BIT
return signed_integer_to_string(buf, cchBuf, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_uint64_t const& i)
{
#ifdef STLSOFT_INTEGER_TO_STRING_OPTIMISE_64BIT
if(i < 0x80000000)
{
return unsigned_integer_to_string(buf, cchBuf, static_cast<ss_uint32_t>(i));
}
#endif // STLSOFT_INTEGER_TO_STRING_OPTIMISE_64BIT
return unsigned_integer_to_string(buf, cchBuf, i);
}
#endif /* STLSOFT_CF_64BIT_INT_SUPPORT */
#ifdef STLSOFT_CF_INT_DISTINCT_INT_TYPE
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, int i)
{
return signed_integer_to_string(buf, cchBuf, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, unsigned int i)
{
return unsigned_integer_to_string(buf, cchBuf, i);
}
#endif /* !STLSOFT_CF_INT_DISTINCT_INT_TYPE */
#ifdef STLSOFT_CF_LONG_DISTINCT_INT_TYPE
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, long i)
{
return signed_integer_to_string(buf, cchBuf, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, unsigned long i)
{
return unsigned_integer_to_string(buf, cchBuf, i);
}
#endif /* !STLSOFT_CF_LONG_DISTINCT_INT_TYPE */
#ifdef STLSOFT_CF_STATIC_ARRAY_SIZE_DETERMINATION_SUPPORT
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], ss_sint8_t i)
{
STLSOFT_STATIC_ASSERT(!(N < 5));
return signed_integer_to_string(buf, N, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], ss_uint8_t i)
{
STLSOFT_STATIC_ASSERT(!(N < 4));
return unsigned_integer_to_string(buf, N, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], ss_sint16_t i)
{
STLSOFT_STATIC_ASSERT(!(N < 7));
return signed_integer_to_string(buf, N, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], ss_uint16_t i)
{
STLSOFT_STATIC_ASSERT(!(N < 6));
return unsigned_integer_to_string(buf, N, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], ss_sint32_t i)
{
STLSOFT_STATIC_ASSERT(!(N < 12));
return signed_integer_to_string(buf, N, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], ss_uint32_t i)
{
STLSOFT_STATIC_ASSERT(!(N < 11));
return unsigned_integer_to_string(buf, N, i);
}
#ifdef STLSOFT_CF_64BIT_INT_SUPPORT
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], ss_sint64_t const& i)
{
STLSOFT_STATIC_ASSERT(!(N < 21));
#ifdef STLSOFT_INTEGER_TO_STRING_OPTIMISE_64BIT
if(i < 0x80000000)
{
return signed_integer_to_string(buf, N, static_cast<ss_sint32_t>(i));
}
#endif // STLSOFT_INTEGER_TO_STRING_OPTIMISE_64BIT
return signed_integer_to_string(buf, N, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], ss_uint64_t const& i)
{
STLSOFT_STATIC_ASSERT(!(N < 21));
#ifdef STLSOFT_INTEGER_TO_STRING_OPTIMISE_64BIT
if(i < 0x80000000)
{
return unsigned_integer_to_string(buf, N, static_cast<ss_uint32_t>(i));
}
#endif // STLSOFT_INTEGER_TO_STRING_OPTIMISE_64BIT
return unsigned_integer_to_string(buf, N, i);
}
#endif /* STLSOFT_CF_64BIT_INT_SUPPORT */
#ifdef STLSOFT_CF_INT_DISTINCT_INT_TYPE
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], int i)
{
return signed_integer_to_string(buf, N, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], unsigned int i)
{
return signed_integer_to_string(buf, N, i);
}
#endif /* !STLSOFT_CF_INT_DISTINCT_INT_TYPE */
#ifdef STLSOFT_CF_LONG_DISTINCT_INT_TYPE
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], long i)
{
return signed_integer_to_string(buf, N, i);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template< ss_typename_param_k C
, ss_size_t N
>
inline C const* integer_to_string(C (&buf)[N], unsigned long i)
{
return signed_integer_to_string(buf, N, i);
}
#endif /* !STLSOFT_CF_LONG_DISTINCT_INT_TYPE */
#endif /* STLSOFT_CF_STATIC_ARRAY_SIZE_DETERMINATION_SUPPORT */
#if 0
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_int_t i)
{
return signed_integer_to_string(buf, cchBuf, i);
}
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_uint_t i)
{
return unsigned_integer_to_string(buf, cchBuf, i);
}
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_bool_t i);
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_char_a_t i);
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_char_w_t i);
#endif /* 0 */
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_sint8_t i, ss_size_t &cchRes)
{
return signed_integer_to_string(buf, cchBuf, i, cchRes);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_uint8_t i, ss_size_t &cchRes)
{
return unsigned_integer_to_string(buf, cchBuf, i, cchRes);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_sint16_t i, ss_size_t &cchRes)
{
return signed_integer_to_string(buf, cchBuf, i, cchRes);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_uint16_t i, ss_size_t &cchRes)
{
return unsigned_integer_to_string(buf, cchBuf, i, cchRes);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_sint32_t i, ss_size_t &cchRes)
{
return signed_integer_to_string(buf, cchBuf, i, cchRes);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_uint32_t i, ss_size_t &cchRes)
{
return unsigned_integer_to_string(buf, cchBuf, i, cchRes);
}
#ifdef STLSOFT_CF_64BIT_INT_SUPPORT
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_sint64_t const& i, ss_size_t &cchRes)
{
return signed_integer_to_string(buf, cchBuf, i, cchRes);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, ss_uint64_t const& i, ss_size_t &cchRes)
{
return unsigned_integer_to_string(buf, cchBuf, i, cchRes);
}
#endif /* STLSOFT_CF_64BIT_INT_SUPPORT */
#ifdef STLSOFT_CF_INT_DISTINCT_INT_TYPE
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, int i, ss_size_t &cchRes)
{
return signed_integer_to_string(buf, cchBuf, i, cchRes);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, unsigned int i, ss_size_t &cchRes)
{
return unsigned_integer_to_string(buf, cchBuf, i, cchRes);
}
#endif /* !STLSOFT_CF_INT_DISTINCT_INT_TYPE */
#ifdef STLSOFT_CF_LONG_DISTINCT_INT_TYPE
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, long i, ss_size_t &cchRes)
{
return signed_integer_to_string(buf, cchBuf, i, cchRes);
}
/** \brief Highly efficient conversion of integer to string.
*
* \ingroup group__library__conversion
*/
template <ss_typename_param_k C>
inline C const* integer_to_string(C *buf, ss_size_t cchBuf, unsigned long i, ss_size_t &cchRes)
{
return unsigned_integer_to_string(buf, cchBuf, i, cchRes);
}
#endif /* !STLSOFT_CF_LONG_DISTINCT_INT_TYPE */
////////////////////////////////////////////////////////////////////////////
// Unit-testing
#ifdef STLSOFT_UNITTEST
# include "./unittest/integer_to_string_unittest_.h"
#endif /* STLSOFT_UNITTEST */
/* ////////////////////////////////////////////////////////////////////// */
#ifndef _STLSOFT_NO_NAMESPACE
} // namespace stlsoft
#endif /* _STLSOFT_NO_NAMESPACE */
/* ////////////////////////////////////////////////////////////////////// */
#endif /* !STLSOFT_INCL_STLSOFT_CONVERSION_HPP_INTEGER_TO_STRING */
/* ////////////////////////////////////////////////////////////////////// */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -