⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 integer_to_string.hpp

📁 新版本TR1的stl
💻 HPP
📖 第 1 页 / 共 2 页
字号:

/** \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 + -